shapes.cpp
Go to the documentation of this file.
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
//
// Copyright @ 2013 ImageMagick Studio LLC, a non-profit organization
// dedicated to making software imaging solutions freely available.
//
// GD/PerlMagick example using Magick++ methods.
//
// Concept and algorithms lifted from PerlMagick demo script
//
#include <Magick++.h>
#include <string>
#include <iostream>
using namespace std;
using namespace Magick;
int main( int /*argc*/, char ** argv)
{
// Initialize ImageMagick install location for Windows
InitializeMagick(*argv);
try {
string srcdir("");
if(getenv("SRCDIR") != 0)
srcdir = getenv("SRCDIR");
//
// Create a 300x300 white canvas.
//
Image image( "300x300", "white" );
//
// Draw texture-filled polygon
//
// Polygon list
std::vector<Coordinate> poly_coord;
poly_coord.push_back( Coordinate(30,30) );
poly_coord.push_back( Coordinate(100,10) );
poly_coord.push_back( Coordinate(190,290) );
poly_coord.push_back( Coordinate(30,290) );
Image texture( srcdir + "tile.miff" );
image.fillPattern( texture );
image.draw( DrawablePolygon( poly_coord ) );
texture.isValid( false );
image.fillPattern( texture ); // Unset texture
//
// Draw filled ellipse with black border, and red fill color
//
image.strokeColor( "black" );
image.fillColor( "red" );
image.strokeWidth( 5 );
image.draw( DrawableEllipse( 100,100, 50,75, 0,360 ) );
image.fillColor( Color() ); // Clear out fill color
//
// Draw ellipse, and polygon, with black stroke, strokeWidth of 5
//
image.strokeColor( "black" );
image.strokeWidth( 5 );
vector<Drawable> drawlist;
// Add polygon to list
poly_coord.clear();
poly_coord.push_back( Coordinate(30,30) );
poly_coord.push_back( Coordinate(100,10) );
poly_coord.push_back( Coordinate(190,290) );
poly_coord.push_back( Coordinate(30,290) );
drawlist.push_back( DrawablePolygon( poly_coord ) );
image.draw( drawlist );
//
// Floodfill object with blue
//
image.colorFuzz( 0.5*QuantumRange );
image.floodFillColor( "+132+62", "blue" );
//
// Draw text
//
image.strokeColor(Color());
image.fillColor( "red" );
if (getenv("MAGICK_FONT") != 0)
image.font(string(getenv("MAGICK_FONT")));
image.fontPointsize( 18 );
#if MAGICKCORE_FREETYPE_DELEGATE
image.annotate( "Hello world!", "+150+20" );
#endif
image.fillColor( "blue" );
image.fontPointsize( 14 );
#if MAGICKCORE_FREETYPE_DELEGATE
image.annotate( "Goodbye cruel world!", "+150+38" );
#endif
image.fillColor( "black" );
image.fontPointsize( 14 );
#if MAGICKCORE_FREETYPE_DELEGATE
image.annotate( "I'm climbing the wall!", "+280+120",
NorthWestGravity, 90.0 );
#endif
//image.display();
//
// Write image.
//
cout << "Writing image \"shapes_out.miff\" ..." << endl;
image.depth( 8 );
image.compressType( RLECompression );
image.write( "shapes_out.miff" );
// cout << "Display image..." << endl;
// image.display( );
}
catch( exception &error_ )
{
cout << "Caught exception: " << error_.what() << endl;
return 1;
}
return 0;
}
Magick::Color
class MagickPPExport Color
Definition: Color.h:18
Magick::Image::annotate
void annotate(const std::string &text_, const Geometry &location_)
Definition: Image.cpp:1858
Magick::DrawableEllipse
Definition: Drawable.h:850
main
int main(int, char **argv)
Definition: shapes.cpp:21
std
STL namespace.
Magick::Image::write
void write(Blob *blob_)
Definition: Image.cpp:4896
Magick::Image::strokeWidth
void strokeWidth(const double strokeWidth_)
Definition: Image.cpp:1507
Magick++.h
Magick::Image::strokeColor
void strokeColor(const Color &strokeColor_)
Definition: Image.cpp:1403
Magick::Coordinate
Definition: Drawable.h:48
Magick::Image::colorFuzz
void colorFuzz(const double fuzz_)
Definition: Image.cpp:527
Magick::Image::font
void font(const std::string &font_)
Definition: Image.cpp:852
Magick::Image::fontPointsize
void fontPointsize(const double pointSize_)
Definition: Image.cpp:874
Magick::Image::fillPattern
void fillPattern(const Image &fillPattern_)
Definition: Image.cpp:808
Magick::Image::fillColor
void fillColor(const Color &fillColor_)
Definition: Image.cpp:786
Magick::Image::draw
void draw(const Drawable &drawable_)
Definition: Image.cpp:2798
Magick::Image::isValid
void isValid(const bool isValid_)
Definition: Image.cpp:1076
Magick
Definition: Blob.h:17
Magick::Image::floodFillColor
void floodFillColor(const Geometry &point_, const Color &fillColor_, const bool invert_=false)
Definition: Image.cpp:3044
Magick::InitializeMagick
MagickPPExport void InitializeMagick(const char *path_)
Definition: Functions.cpp:45
Magick::DrawablePolygon
Definition: Drawable.h:1273
Magick::Image::depth
void depth(const size_t depth_)
Definition: Image.cpp:693
Magick::Image
Definition: Image.h:55
Magick::Image::compressType
void compressType(const CompressionType compressType_)
Definition: Image.cpp:630