--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Working with Blobs</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Magick::Blob</h1>
+<p>Blob provides the means to contain any opaque data. It is named after the term "Binary Large OBject" commonly used to describe unstructured data (such as encoded images) which is stored in a database. While the function of Blob is very simple (store a pointer and and size associated with allocated data), the Blob class provides some very useful capabilities. In particular, it is fully reference counted just like the Image class.</p>
+<p>The Blob class supports value assignment while preserving any outstanding earlier versions of the object. Since assignment is via a pointer internally, Blob is efficient enough to be stored directly in an STL container or any other data structure which requires assignment. In particular, by storing a Blob in an <a href="http://www.sgi.com/tech/stl/AssociativeContainer.html">associative container</a> (such as STL's '<a href="http://www.sgi.com/tech/stl/Map.html"><i>map</i></a>') it is possible to create simple indexed in-memory "database" of Blobs.</p>
+<p>Magick++ currently uses Blob to contain encoded images (e.g. JPEG) as well as ICC and IPTC profiles. Since Blob is a general-purpose class, it may be used for other purposes as well.</p>
+<p style="margin-bottom: 0cm">The methods Blob provides are shown in the following table:</p>
+<br />
+<p align="center" style="margin-bottom: 0cm"><b>Blob Methods</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="2">
+<tr>
+<td>
+<p align="center"><b>Method</b></p></td>
+<td>
+<p align="center"><b>Return Type</b></p></td>
+<td>
+<p align="center"><b>Signature(s)</b></p></td>
+<td>
+<p align="center"><b>Description</b></p></td></tr>
+<tr>
+<td rowspan="3">
+<p><a name="Blob"></a><font size="2">Blob</font></p></td>
+<td rowspan="3" bgcolor="#666666"></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Default constructor</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">const void* data_, size_t length_</font></p></td>
+<td>
+<p><font size="2">Construct object with data, making a copy of the supplied data</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">const Blob& blob_</font></p></td>
+<td>
+<p><font size="2">Copy constructor (reference counted)</font></p></td></tr>
+<tr>
+<td>
+<p><a name="operator="></a><font size="2">operator=</font></p></td>
+<td>
+<p><font size="2">Blob</font></p></td>
+<td>
+<p><font size="2">const Blob& blob_</font></p></td>
+<td>
+<p><font size="2">Assignment operator (reference counted)</font></p></td></tr>
+<tr>
+<td>
+<p><a name="update"></a><font size="2">update</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const void* data_, size_t length_</font></p></td>
+<td>
+<p><font size="2">Update object contents, making a copy of the supplied data. Any existing data in the object is deallocated.</font></p></td></tr>
+<tr>
+<td>
+<p><a name="data"></a><font size="2">data</font></p></td>
+<td>
+<p><font size="2">const void*</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Obtain pointer to data</font></p></td></tr>
+<tr>
+<td>
+<p><a name="length"></a><font size="2">length</font></p></td>
+<td>
+<p><font size="2">size_t</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Obtain data length</font></p></td></tr>
+<tr>
+<td>
+<p><a name="updateNoCopy"></a><font size="2">updateNoCopy</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">void* data_, size_t length_, Blob::Allocator allocator_ = Blob::NewAllocator</font></p></td>
+<td>
+<p><font size="2">Update object contents, using supplied pointer directly (no copy) Any existing data in the object is deallocated. The user must ensure that the pointer supplied is not deleted or otherwise modified after it has been supplied to this method. The optional allocator_ parameter allows the user to specify if the C (MallocAllocator) or C++ (NewAllocator) memory allocation system was used to allocate the memory. The default is to use the C++ memory allocator.</font></p></td></tr></table>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Access Raw Image Pixels</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h3 align="center">Magick::CoderInfo</h3>
+<p>The <i>CoderInfo</i> class provides the means to provide information regarding ImageMagick support for an image format (designated by a magick string). It may be used to provide support for a specific named format (provided as an argument to the constructor), or as an element of a container when format support is queried using the <a href="STL.html#coderInfoList">coderInfoList()</a> templated function.</p>
+<p>The following code fragment illustrates how CoderInfo may be used.</p>
+<pre class="code">
+CoderInfo info("GIF");
+cout < info->name() << ": (" << info->description() << ") : ";
+cout << "Readable = ";
+if ( info->isReadable() )
+ cout << "true";
+else
+ cout << "false";
+cout << ", ";
+cout << "Writable = ";
+if ( info->isWritable() )
+ cout << "true";
+else
+ cout << "false";
+cout << ", ";
+cout << "Multiframe = ";
+if ( info->isMultiframe() )
+ cout << "true";
+else
+ cout << "false";
+cout << endl;
+</pre>
+<p style="margin-bottom: 0cm">The methods available in the <i>CoderInfo</i> class are shown in the following table:</p>
+<br />
+<ul><p align="center" style="margin-bottom: 0cm"><b>CoderInfo Methods</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="2">
+<tr>
+<td>
+<p align="center"><b>Method</b></p></td>
+<td>
+<p align="center"><b>Returns</b></p></td>
+<td>
+<p align="center"><b>Signature</b></p></td>
+<td>
+<p align="center"><b>Description</b></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="CoderInfo"></a><font size="2">CoderInfo</font></p></td>
+<td bgcolor="#999999"></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Construct object corresponding to named format (e.g. "GIF"). An exception is thrown if the format is not supported.</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="name"></a><font size="2">name</font></p></td>
+<td>
+<p><font size="2">std::string</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Format name (e.g. "GIF").</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="description"></a><font size="2">description</font></p></td>
+<td>
+<p><font size="2">std::string</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Format description (e.g. "CompuServe graphics interchange format").</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="isReadable"></a><font size="2">isReadable</font></p></td>
+<td>
+<p><font size="2">bool</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Format is readable.</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="isWritable"></a><font size="2">isWritable</font></p></td>
+<td>
+<p><font size="2">bool</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Format is writeable.</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="isMultiFrame"></a><font size="2">isMultiFrame</font></p></td>
+<td>
+<p><font size="2">bool</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Format supports multiple frames.</font></p></td></tr></table></ul>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Working with Color</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Magick::Color</h1>
+<p><a href="#Color">Color</a> is the base color class in Magick++. It is a simple container class for the pixel red, green, blue, and alpha values scaled to fit ImageMagick's Quantum size. Normally users will instantiate a class derived from Color which supports the color model that fits the needs of the application. The Color class may be constructed directly from an SVG-style color string.</p>
+<h4>Quantum</h4>
+
+The base type used to represent color samples in ImageMagick is the Quantum type. Pixels are represented by a structure of Quantum values. For example, an RGB pixel contains red, green, and blue quantums, while an RGBA pixel contains red, green, blue, and opacity quantums. The maximum value that a Quantum can attain is specified by a constant value represented by the MaxRGB define, which is itself determined by the number of bits in a Quantum. The QuantumDepth build option determines the number of bits in a Quantum.
+
+<h4>Quantum</h4>
+
+Quantum is the internal representation of a pixel in ImageMagick. ImageMagick may be compiled to support 32, 64, or 128 bit pixels of type Quantum. This is controlled by the value of the QuantumDepth define. The default is 32 bit pixels (QuantumDepth=8), which provides the best performance and the least resource consumption. If additional color precision or range is desired, then ImageMagick may be compiled with QuantumDepth=16 or QuantumDepth=32. The following table shows the relationship between QuantumDepth, the type of Quantum, and the overall Quantum size.
+<p align="center" style="margin-bottom: 0cm"><b>Effect Of QuantumDepth Values</b></p>
+<center>
+<table width="361" border="1" cellpadding="2" cellspacing="3">
+<col width="102" />
+<col width="121" />
+<col width="111" />
+<tr>
+<td width="102">
+<p align="center"><b>QuantumDepth</b></p></td>
+<td width="121">
+<p align="center"><b>Quantum Typedef</b></p></td>
+<td width="111">
+<p align="center"><b>Quantum Size</b></p></td></tr>
+<tr>
+<td width="102">
+<p align="center">8</p></td>
+<td width="121">
+<p align="center">unsigned char</p></td>
+<td width="111">
+<p align="center">32 bits</p></td></tr>
+<tr>
+<td width="102">
+<p align="center">16</p></td>
+<td width="121">
+<p align="center">unsigned short</p></td>
+<td width="111">
+<p align="center">64 bits</p></td></tr>
+<tr>
+<td width="102">
+<p align="center">32</p></td>
+<td width="121">
+<p align="center">unsigned int</p></td>
+<td width="111">
+<p align="center">128 bits</p></td></tr>
+</table></center>
+<h3><a name="Color"></a>Color Class</h3>
+<p>The Color base class is not intended to be used directly. Normally a user will construct a derived class or inherit from this class. Color arguments are must be scaled to fit the Quantum size. The Color class contains a pointer to a Quantum, which may be allocated by the Color class, or may refer to an existing pixel in an image.</p>
+<p>An alternate way to construct the class is via an SVG-compatible color specification string (e.g. Color("red") or Color ("#FF0000")). Since the class may be constructed from a string, convenient strings may be passed in place of an explicit Color object in methods which accept a reference to Color. Color may also be converted to a std::string for convenience in user interfaces, and for saving settings to a text file.</p>
+<div class="viewport">
+class Color
+{
+ public:
+ Color ( Quantum red_,
+ Quantum green_,
+ Quantum blue_ );
+ Color ( Quantum red_,
+ Quantum green_,
+ Quantum blue_,
+ Quantum alpha_ );
+ Color ( const std::string &svgColor_ );
+ Color ( const char * svgColor_ );
+ Color ( void );
+ virtual ~Color ( void );
+ Color ( const Color & color_ );
+
+ // Red color (range 0 to MaxRGB)
+ void redQuantum ( Quantum red_ );
+ Quantum redQuantum ( void ) const;
+
+ // Green color (range 0 to MaxRGB)
+ void greenQuantum ( Quantum green_ );
+ Quantum greenQuantum ( void ) const;
+
+ // Blue color (range 0 to MaxRGB)
+ void blueQuantum ( Quantum blue_ );
+ Quantum blueQuantum ( void ) const;
+
+ // Alpha level (range OpaqueOpacity=0 to TransparentOpacity=MaxRGB)
+ void alphaQuantum ( Quantum alpha_ );
+ Quantum alphaQuantum ( void ) const;
+
+ // Scaled (to 1.0) version of alpha for use in sub-classes
+ // (range opaque=0 to transparent=1.0)
+ void alpha ( double alpha_ );
+ double alpha ( void ) const;
+
+ // Does object contain valid color?
+ void isValid ( bool valid_ );
+ bool isValid ( void ) const;
+
+ // Set color via SVG color specification string
+ const Color& operator= ( const std::string & svgColor_ );
+ const Color& operator= ( const char * svgColor_ );
+
+ // Assignment operator
+ Color& operator= ( const Color& color_ );
+
+ // Return SVG color specification string
+ /* virtual */ operator std::string() const;
+
+ // Return ImageMagick Quantum
+ operator Quantum() const;
+
+ // Construct color via ImageMagick Quantum
+ Color ( const Quantum &color_ );
+
+ // Set color via ImageMagick Quantum
+ const Color& operator= ( Quantum &color_ );
+};
+</div>
+<p align="center" style="margin-bottom: 0cm"><b>Color Derived Classes</b></p>
+<table width="90%" border="1" cellpadding="2" cellspacing="3">
+<col width="29*" />
+<col width="227*" />
+<tr>
+<td width="12%">
+<p><a href="#ColorRGB">ColorRGB</a></p></td>
+<td width="88%">
+<p>Representation of RGB color with red, green, and blue specified as ratios (0 to 1)</p></td></tr>
+<tr>
+<td width="12%">
+<p><a href="#ColorGray">ColorGray</a></p></td>
+<td width="88%">
+<p>Representation of <span lang="en-US">grayscale</span> sRGB color (equal parts red, green, and blue) specified as a ratio (0 to 1)</p></td></tr>
+<tr>
+<td width="12%">
+<p><a href="#ColorMono">ColorMono</a></p></td>
+<td width="88%">
+<p>Representation of a black/white color (true/false)</p></td></tr>
+<tr>
+<td width="12%">
+<p><a href="#ColorYUV">ColorYUV</a></p></td>
+<td width="88%">
+<p>Representation of a color in the YUV <span lang="en-US">colorspace</span></p></td></tr></table>
+<h3><a name="ColorRGB"></a>ColorRGB</h3>
+<p>Representation of an sRGB color. All color arguments have a valid range of 0.0 - 1.0.</p>
+<pre class="code">
+class ColorRGB : public Color
+{
+ public:
+ ColorRGB ( double red_, double green_, double blue_ );
+ ColorRGB ( void );
+ ColorRGB ( const Color & color_ );
+ /* virtual */ ~ColorRGB ( void );
+
+ void red ( double red_ );
+ double red ( void ) const;
+
+ void green ( double green_ );
+ double green ( void ) const;
+
+ void blue ( double blue_ );
+ double blue ( void ) const;
+
+ // Assignment operator from base class
+ ColorRGB& operator= ( const Color& color_ );
+};
+</pre>
+<h3><a name="ColorGray"></a>ColorGray</h3>
+<p>Representation of a grayscale color (in linear colorspace). <span lang="en-US">Grayscale</span> is simply RGB with equal parts of red, green, and blue. All double arguments have a valid range of 0.0 - 1.0.</p>
+<pre class="code">
+class ColorGray : public Color
+{
+ public:
+ ColorGray ( double shade_ );
+ ColorGray ( void );
+ ColorGray ( const Color & color_ );
+ /* virtual */ ~ColorGray ();
+
+ void shade ( double shade_ );
+ double shade ( void ) const;
+
+ // Assignment operator from base class
+ ColorGray& operator= ( const Color& color_ );
+};
+</pre>
+<h3><a name="ColorMono"></a>ColorMono</h3>
+<p>Representation of a black/white pixel (in RGB colorspace). Color arguments are constrained to 'false' (black pixel) and 'true' (white pixel).</p>
+<pre class="code">
+class ColorMono : public Color
+{
+ public:
+ ColorMono ( bool mono_ );
+ ColorMono ( void );
+ ColorMono ( const Color & color_ );
+ /* virtual */ ~ColorMono ();
+
+ void mono ( bool mono_ );
+ bool mono ( void ) const;
+
+ // Assignment operator from base class
+ ColorMono& operator= ( const Color& color_ );
+};
+</pre>
+<h3><a name="ColorHSL"></a>ColorHSL</h3>
+<p>Representation of a color in Hue/Saturation/Luminosity (HSL) colorspace.</p>
+<pre class="code">
+class ColorHSL : public Color
+{
+ public:
+ ColorHSL ( double hue_, double saturation_, double luminosity_ );
+ ColorHSL ( void );
+ ColorHSL ( const Color & color_ );
+ /* virtual */ ~ColorHSL ( );
+
+ void hue ( double hue_ );
+ double hue ( void ) const;
+
+ void saturation ( double saturation_ );
+ double saturation ( void ) const;
+
+ void luminosity ( double luminosity_ );
+ double luminosity ( void ) const;
+
+ // Assignment operator from base class
+ ColorHSL& operator= ( const Color& color_ );
+};
+</pre>
+<h3><a name="ColorYUV"></a>ColorYUV</h3>
+<p>Representation of a color in YUV colorspace (used to encode color for television transmission).</p>
+<p>Argument ranges:</p>
+<dl>
+<dd> Y: 0.0 through 1.0</dd>
+<dd> U: -0.5 through 0.5</dd>
+<dd> V: -0.5 through 0.5</dd>
+</dl>
+<pre class="code">
+class ColorYUV : public Color
+{
+ public:
+ ColorYUV ( double y_, double u_, double v_ );
+ ColorYUV ( void );
+ ColorYUV ( const Color & color_ );
+ /* virtual */ ~ColorYUV ( void );
+
+ void u ( double u_ );
+ double u ( void ) const;
+
+ void v ( double v_ );
+ double v ( void ) const;
+
+ void y ( double y_ );
+ double y ( void ) const;
+
+ // Assignment operator from base class
+ ColorYUV& operator= ( const Color& color_ );
+};
+</pre>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Drawing on Images</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 style="text-align:center">Magick::Drawable</h1>
+<p>Drawable provides a convenient interface for preparing vector, image, or text arguments for the Image::draw() method. Each instance of a Drawable sub-class represents a single drawable object. Drawable objects may be drawn "one-by-one" via multiple invocations of the Image <a href="Image++.html#draw">draw</a>() method, or may be drawn "all-at-once" by passing a list of Drawable objects to the Image <a href="Image++.html#draw">draw</a>() method. The one-by-one approach is convenient for simple drawings, while the list-based approach is appropriate for drawings which require more sophistication.</p>
+<p>The following is an example using the Drawable subclasses with a one-by-one approach to draw the following figure:</p>
+<p class="image"><font color="#000000"><font color="#000000"><img
+ src="Drawable_example_1.png" name="Graphic1" align="bottom" border="3"
+ height="200" width="300" alt="example" /></font></font>
+</p>
+<div class="viewport">
+#include <string>
+#include <iostream>
+#include <Magick++.h>
+
+using namespace std;
+using namespace Magick;
+
+int main(int /*argc*/,char **argv)
+{
+ try {
+ InitializeMagick(*argv);
+
+ // Create base image (white image of 300 by 200 pixels)
+ Image image( Geometry(300,200), Color("white") );
+
+ // Set draw options
+ image.strokeColor("red"); // Outline color
+ image.fillColor("green"); // Fill color
+ image.strokeWidth(5);
+
+ // Draw a circle
+ image.draw( DrawableCircle(100,100, 50,100) );
+
+ // Draw a rectangle
+ image.draw( DrawableRectangle(200,200, 270,170) );
+
+ // Display the result
+ image.display( );
+ }
+ catch( exception & error_ )
+ {
+ cout << "Caught exception: " << error_.what() << endl;
+ return 1;
+ }
+
+ return 0;
+}
+</div>
+<p>Since Drawable is an object it may be saved in an array or a list for later (perhaps repeated) use. The following example shows how to draw the same figure using the list-based approach:</p>
+<div class="viewport">
+#include <string>
+#include <iostream>
+#include <list>
+#include <Magick++.h>
+
+using namespace std;
+using namespace Magick;
+
+int main(int /*argc*/,char **/*argv*/)
+{
+ try {
+
+ InitializeMagick(*argv);
+
+ // Create base image (white image of 300 by 200 pixels)
+ Image image( Geometry(300,200), Color("white") );
+
+ // Construct drawing list
+ std::list<Magick::Drawable> drawList;
+
+ // Add some drawing options to drawing list
+ drawList.push_back(DrawableStrokeColor("red")); // Outline color
+ drawList.push_back(DrawableStrokeWidth(5)); // Stroke width
+ drawList.push_back(DrawableFillColor("green")); // Fill color
+
+ // Add a Circle to drawing list
+ drawList.push_back(DrawableCircle(100,100, 50,100));
+
+ // Add a Rectangle to drawing list
+ drawList.push_back(DrawableRectangle(200,100, 270,170));
+
+ // Draw everything using completed drawing list
+ image.draw(drawList);
+
+ // Display the result
+ image.display( );
+ }
+ catch( exception & error_ )
+ {
+ cout << "Caught exception: " << error_.what() << endl;
+ return 1;
+ }
+
+ return 0;
+}
+</div>
+<p>Drawable depends on the simple Coordinate structure which represents a pair of x,y coodinates. The methods provided by the Coordinate structure are shown in the following table:</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Coordinate Structure Methods</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="2">
+<tr>
+<th>
+<p class="western">Method/Member</p></th>
+<th>
+<p class="western">Signature</p></th>
+<th>
+<p class="western">Description</p></th></tr>
+<tr>
+<td rowspan="2">
+<p class="western" style="text-align:center">Coordinate</p></td>
+<td>
+<p class="western">void</p></td>
+<td>
+<p class="western">Default Constructor</p></td></tr>
+<tr>
+<td>
+<p class="western">double x_, double y_</p></td>
+<td>
+<p class="western">Constructor, setting <i>first</i> & <i>second</i></p></td></tr>
+<tr>
+<td>
+<p class="western" style="text-align:center">x</p></td>
+<td>
+<p class="western">double x_</p></td>
+<td>
+<p class="western">x coordinate member</p></td></tr>
+<tr>
+<td>
+<p class="western" style="text-align:center">y</p></td>
+<td>
+<p class="western">double y_</p></td>
+<td>
+<p class="western">y coordinate member</p></td></tr></table>
+<p>The Drawable classes are shown in the following table. Only constructor signatures are documented here. Each Drawable class also provides methods by which each individual parameter may be adjusted.</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Drawable Classes</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+<col width="68*"/>
+<col width="55*"/>
+<col width="133*"/>
+<tr>
+<th width="27%">
+<p class="western">Sub-Class</p></th>
+<th width="21%">
+<p class="western">Constructor Signature</p></th>
+<th width="52%">
+<p class="western">Description</p></th></tr>
+<tr>
+<td rowspan="2" width="27%">
+<p class="western" style="text-align:center">DrawableAffine</p></td>
+<td width="21%">
+<p class="western">double sx_, double sy_, double rx_, double ry_, double tx_, double ty_</p></td>
+<td width="52%">
+<p class="western">Specify a transformation matrix to adjust scaling, rotation, and translation (coordinate transformation) for subsequently drawn objects in the same or decendent drawing context. The sx_ & sy_ parameters represent the x & y scale factors, the rx_ & ry_ parameters represent the x & y rotation, and the tx_ & ty_ parameters represent the x & y translation.</p></td></tr>
+<tr>
+<td width="21%">
+<p class="western">void</p></td>
+<td width="52%">
+<p class="western">Specify a transformation matrix to adjust scaling, rotation, and translation (coordinate transformation) for subsequently drawn objects in the same or decendent drawing context. Initialized to unity (no effect) affine values. Use class methods (not currently documented) to adjust individual parameters from their unity values.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableAngle</p></td>
+<td width="21%">
+<p class="western">double angle_</p></td>
+<td width="52%">
+<p class="western">Set drawing angle</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableArc</p></td>
+<td width="21%">
+<p class="western">double startX_, double startY_, double endX_, double endY_, double startDegrees, double endDegrees_</p></td>
+<td width="52%">
+<p class="western">Draw an arc using the <i>stroke</i> color and based on the circle starting at coordinates <i>startX_</i>,<i>startY_,</i> and ending with coordinates <i>endX_,</i>endY_, and bounded by the rotational arc <i>startDegrees_,endDegrees_</i></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableBezier</p></td>
+<td width="21%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td>
+<td width="52%">
+<p class="western">Draw a bezier curve using the <i>stroke</i> color and based on the coordinates specified by the <i>coordinates_</i> list.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableClipPath</p></td>
+<td width="21%">
+<p class="western">const std::string &id_</p></td>
+<td width="52%">
+<p class="western">Select a drawing clip path matching <em>id_.</em></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableCircle</p></td>
+<td width="21%">
+<p class="western">double originX_, double originY_, double perimX_, double perimY_</p></td>
+<td width="52%">
+<p class="western">Draw a circle using the <i>stroke</i> color and thickness using specified origin and perimeter coordinates. If a <i>fill</i> color is specified, then the object is filled.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableColor</p></td>
+<td width="21%">
+<p class="western"><font size="2">double x_, double y_, <a href="Enumerations.html#PaintMethod">PaintMethod</a> paintMethod_</font></p></td>
+<td width="52%">
+<p class="western">Color image according to paintMethod. The point method recolors the target pixel. The replace method recolors any pixel that matches the color of the target pixel. Floodfill recolors any pixel that matches the color of the target pixel and is a neighbor, whereas filltoborder recolors any neighbor pixel that is not the border color. Finally, reset recolors all pixels.</p></td></tr>
+<tr>
+<td rowspan="6" width="27%">
+<p class="western" style="text-align:center">DrawableCompositeImage</p></td>
+<td width="21%">
+<p class="western">double x_, double y_, const std::string &filename_</p></td>
+<td rowspan="2" width="52%">
+<p class="western">Composite current image with contents of specified image, at specified coordinates. If the <i>matte</i> attribute is set to <i>true</i>, then the image composition will consider an alpha channel, or transparency, present in the image file so that non-opaque portions allow part (or all) of the composite image to show through.</p></td></tr>
+<tr>
+<td width="21%">
+<p class="western">double x_, double y_, const Image &image_</p></td></tr>
+<tr>
+<td width="21%">
+<p class="western">double x_, double y_, double width_, double height_, const std::string &filename_</p></td>
+<td rowspan="2" width="52%">
+<p class="western">Composite current image with contents of specified image, rendered with specified width and height, at specified coordinates. If the <i>matte</i> attribute is set to <i>true</i>, then the image composition will consider an alpha channel, or transparency, present in the image file so that non-opaque portions allow part (or all) of the composite image to show through. If the specified <i>width</i> or <i>height</i> is zero, then the image is composited at its natural size, without enlargement or reduction.</p></td></tr>
+<tr>
+<td width="21%">
+<p class="western">double x_, double y_, double width_, double height_, const Image &image_</p></td></tr>
+<tr>
+<td width="21%">
+<p class="western"><font size="2">double x_, double y_, double width_, double height_, const std::string &filename_, <a href="Enumerations.html#CompositeOperator">CompositeOperator</a> composition_</font></p></td>
+<td rowspan="2" width="52%">
+<p class="western">Composite current image with contents of specified image, rendered with specified width and height, using specified composition algorithm, at specified coordinates. If the <i>matte</i> attribute is set to <i>true</i>, then the image composition will consider an alpha channel, or transparency, present in the image file so that non-opaque portions allow part (or all) of the composite image to show through. If the specified <i>width</i> or <i>height</i> is zero, then the image is composited at its natural size, without enlargement or reduction.</p></td></tr>
+<tr>
+<td width="21%">
+<p class="western"><font size="2">double x_, double y_, double width_, double height_, const Image &image_, <a href="Enumerations.html#CompositeOperator">CompositeOperator</a> composition_</font></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableDashArray</p></td>
+<td width="21%">
+<p class="western">const double* dasharray_</p></td>
+<td width="52%">
+<p class="western">Specify the pattern of dashes and gaps used to stroke paths. The strokeDashArray represents a zero-terminated array of numbers that specify the lengths of alternating dashes and gaps in pixels. If an odd number of values is provided, then the list of values is repeated to yield an even number of values. A typical strokeDashArray_ array might contain the members 5 3 2 0, where the zero value indicates the end of the pattern array.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableDashOffset</p></td>
+<td width="21%">
+<p class="western">double offset_</p></td>
+<td width="52%">
+<p class="western"><font size="2" style="font-size: 11pt">Specify the distance into the dash pattern to start the dash. See documentation on SVG's</font> <a href="http://www.w3.org/TR/SVG/painting.html#StrokeDashoffsetProperty"><font size="2" style="font-size: 11pt">stroke-dashoffset</font></a> <font size="2" style="font-size: 11pt">property for usage details.</font></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableEllipse</p></td>
+<td width="21%">
+<p class="western">double originX_, double originY_, double radiusX_, double radiusY_, double arcStart_, double arcEnd_</p></td>
+<td width="52%">
+<p class="western">Draw an ellipse using the <i>stroke</i> color and thickness, specified origin, x & y radius, as well as specified start and end of arc in degrees. If a <i>fill</i> color is specified, then the object is filled.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableFillColor</p></td>
+<td width="21%">
+<p class="western"><font size="2">const <a href="Color.html">Color</a> &color_</font></p></td>
+<td width="52%">
+<p class="western">Specify drawing object fill color.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableFillRule</p></td>
+<td width="21%">
+<p class="western"><font size="2"><a href="Enumerations.html#FillRule">FillRule</a> fillRule_</font></p></td>
+<td width="52%">
+<p class="western"><font size="2" style="font-size: 11pt">Specify the algorithm which is to be used to determine what parts of the canvas are included inside the shape. See documentation on SVG's</font> <a href="http://www.w3.org/TR/SVG/painting.html#FillRuleProperty"><font size="2" style="font-size: 11pt">fill-rule</font></a> <font size="2" style="font-size: 11pt">property for usage details.</font></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableFillOpacity</p></td>
+<td width="21%">
+<p class="western">double opacity_</p></td>
+<td width="52%">
+<p class="western">Specify opacity to use when drawing using fill color.</p></td></tr>
+<tr>
+<td rowspan="2" width="27%">
+<p class="western" style="text-align:center">DrawableFont</p></td>
+<td width="21%">
+<p class="western">const std::string &font_</p></td>
+<td width="52%">
+<p class="western">Specify font name to use when drawing text.</p></td></tr>
+<tr>
+<td width="21%">
+<p class="western"><font size="2">const std::string &family_,</font><br />
+<font size="2"><a href="Enumerations.html#StyleType">StyleType</a> style_,</font><br />
+<font size="2">unsigned int weight_,</font><br />
+<font size="2"><a href="Enumerations.html#StretchType">StretchType</a> stretch_</font></p></td>
+<td width="52%">
+<p class="western">Specify font family, style, weight (one of the set { 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 } with 400 being the normal size), and stretch to be used to select the font used when drawing text. Wildcard matches may be applied to style via the AnyStyle enumeration, applied to weight if weight is zero, and applied to stretch via the AnyStretch enumeration.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableGravity</p></td>
+<td width="21%">
+<p class="western"><font size="2"><a href="Enumerations.html#GravityType">GravityType</a> gravity_</font></p></td>
+<td width="52%">
+<p class="western">Specify text positioning gravity.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableLine</p></td>
+<td width="21%">
+<p class="western">double startX_, double startY_, double endX_, double endY_</p></td>
+<td width="52%">
+<p class="western">Draw a line using <i>stroke</i> color and thickness using starting and ending coordinates</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableMatte</p></td>
+<td width="21%">
+<p class="western"><font size="2">double x_, double y_, <a href="Enumerations.html#PaintMethod">PaintMethod</a> paintMethod_</font></p></td>
+<td width="52%">
+<p class="western">Change the pixel matte value to transparent. The point method changes the matte value of the target pixel. The replace method changes the matte value of any pixel that matches the color of the target pixel. Floodfill changes the matte value of any pixel that matches the color of the target pixel and is a neighbor, whereas filltoborder changes the matte value of any neighbor pixel that is not the border color, Finally reset changes the matte value of all pixels.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableMiterLimit</p></td>
+<td width="21%">
+<p class="western">size_t miterLimit_</p></td>
+<td width="52%">
+<p class="western">Specify miter limit. When two line segments meet at a sharp angle and miter joins have been specified for 'lineJoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path. The miterLimit' imposes a limit on the ratio of the miter length to the 'lineWidth'. The default value of this parameter is 4.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePath</p></td>
+<td width="21%">
+<p class="western">const std::list<Magick::VPath> &path_</p></td>
+<td width="52%">
+<p class="western">Draw on image using vector path.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePoint</p></td>
+<td width="21%">
+<p class="western">double x_, double y_</p></td>
+<td width="52%">
+<p class="western">Draw a point using <i>stroke</i> color and thickness at coordinate</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePointSize</p></td>
+<td width="21%">
+<p class="western">double pointSize_</p></td>
+<td width="52%">
+<p class="western">Set font point size.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePolygon</p></td>
+<td width="21%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td>
+<td width="52%">
+<p class="western">Draw an arbitrary polygon using <i>stroke</i> color and thickness consisting of three or more coordinates contained in an STL list. If a <i>fill</i> color is specified, then the object is filled.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePolyline</p></td>
+<td width="21%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td>
+<td width="52%">
+<p class="western">Draw an arbitrary polyline using <i>stroke</i> color and thickness consisting of three or more coordinates contained in an STL list. If a <i>fill</i> color is specified, then the object is filled.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePopClipPath</p></td>
+<td width="21%">
+<p class="western">void</p></td>
+<td width="52%">
+<p class="western">Pop (terminate) clip path definition started by DrawablePushClipPath.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePopGraphicContext</p></td>
+<td width="21%">
+<p class="western">void</p></td>
+<td width="52%">
+<p class="western"><font size="2" style="font-size: 11pt">Pop Graphic Context. Removing the current graphic context from the graphic context stack restores the options to the values they had prior to the preceding</font> <a href="#DrawablePushGraphicContext"><i><font size="2" style="font-size: 11pt">DrawablePushGraphicContext</font></i></a> <font size="2" style="font-size: 11pt">operation.</font></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePushClipPath</p></td>
+<td width="21%">
+<p class="western">const std::string &id_</p></td>
+<td width="52%">
+<p class="western">Push (create) clip path definition with id_. Clip patch definition consists of subsequent drawing commands, terminated by DrawablePopClipPath.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePushGraphicContext</p></td>
+<td width="21%">
+<p class="western">void</p></td>
+<td width="52%">
+<p class="western"><font size="2" style="font-size: 11pt">Push Graphic Context. When a graphic context is pushed, options set after the context is pushed (such as coordinate transformations, color settings, etc.) are saved to a new graphic context. This allows related options to be saved on a graphic context "stack" in order to support heirarchical nesting of options. When</font> <a href="#DrawablePopGraphicContext"><i><font size="2" style="font-size: 11pt">DrawablePopGraphicContext</font></i></a> <font size="2" style="font-size: 11pt">is used to pop the current graphic context, the options in effect during the last <i>DrawablePushGraphicContext</i> operation are restored.</font></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePushPattern</p></td>
+<td width="21%">
+<p class="western">std::string &id_, ssize_t x_, ssize_t y_, size_t width_, size_t height_</p></td>
+<td width="52%">
+<p class="western"><font size="2" style="font-size: 11pt">Start a pattern definition with arbitrary pattern name specified by <i>id_</i>, pattern offset specified by <i>x_</i> and <i>y_</i>, and pattern size specified by <i>width_</i> and <i>height_</i>. The pattern is defined within the coordinate system defined by the specified offset and size. Arbitrary drawing objects (including</font> <a href="#DrawableCompositeImage"><font size="2" style="font-size: 11pt">DrawableCompositeImage</font></a><font size="2" style="font-size: 11pt">) may be specified between</font> <a href="#DrawablePushPattern"><font size="2" style="font-size: 11pt">DrawablePushPattern</font></a> <font size="2" style="font-size: 11pt">and</font> <a href="#DrawablePopPattern"><font size="2" style="font-size: 11pt">DrawablePopPattern</font></a> <font size="2" style="font-size: 11pt">in order to draw the pattern. Normally the pair</font> <a href="#DrawablePushGraphicContext"><font size="2" style=
+"font-size: 11pt">DrawablePushGraphicContext</font></a> <font size="2" style="font-size: 11pt">&</font> <a href="#DrawablePopGraphicContext"><font size="2" style="font-size: 11pt">DrawablePopGraphicContext</font></a> <font size="2" style="font-size: 11pt">are used to enclose a pattern definition. Pattern definitions are terminated by a</font> <a href="#DrawablePopPattern"><font size="2" style="font-size: 11pt">DrawablePopPattern</font></a> <font size="2" style="font-size: 11pt">object.</font></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawablePopPattern</p></td>
+<td width="21%">
+<p class="western">void</p></td>
+<td width="52%">
+<p class="western"><font size="2" style="font-size: 11pt">Terminate a pattern definition started via</font> <a href="#DrawablePushPattern"><font size="2" style="font-size: 11pt">DrawablePushPattern</font></a><font size="2" style="font-size: 11pt">.</font></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableRectangle</p></td>
+<td width="21%">
+<p class="western">double upperLeftX_, double upperLeftY_, double lowerRightX_, double lowerRightY</p></td>
+<td width="52%">
+<p class="western">Draw a rectangle using <i>stroke</i> color and thickness from upper-left coordinates to lower-right coordinates. If a <i>fill</i> color is specified, then the object is filled.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableRotation</p></td>
+<td width="21%">
+<p class="western">double angle_</p></td>
+<td width="52%">
+<p class="western">Set rotation to use when drawing (coordinate transformation).</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableRoundRectangle</p></td>
+<td width="21%">
+<p class="western">double centerX_, double centerY_, double width_, double hight_, double cornerWidth_, double cornerHeight_</p></td>
+<td width="52%">
+<p class="western">Draw a rounded rectangle using <i>stroke</i> color and thickness, with specified center coordinate, specified width and height, and specified corner width and height. If a <i>fill</i> color is specified, then the object is filled.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableScaling</p></td>
+<td width="21%">
+<p class="western">double x_, double y_</p></td>
+<td width="52%">
+<p class="western">Apply scaling in x and y direction while drawing objects (coordinate transformation).</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableSkewX</p></td>
+<td width="21%">
+<p class="western">double angle_</p></td>
+<td width="52%">
+<p class="western">Apply Skew in X direction (coordinate transformation)</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableSkewY</p></td>
+<td width="21%">
+<p class="western">double angle_</p></td>
+<td width="52%">
+<p class="western">Apply Skew in Y direction</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableStrokeAntialias</p></td>
+<td width="21%">
+<p class="western">bool flag_</p></td>
+<td width="52%">
+<p class="western">Antialias while drawing lines or object outlines.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableStrokeColor</p></td>
+<td width="21%">
+<p class="western"><font size="2">const <a href="Color.html">Color</a> &color_</font></p></td>
+<td width="52%">
+<p class="western">Set color to use when drawing lines or object outlines.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableStrokeLineCap</p></td>
+<td width="21%">
+<p class="western"><font size="2"><a href="Enumerations.html#LineCap">LineCap</a> linecap_</font></p></td>
+<td width="52%">
+<p class="western">Specify the shape to be used at the end of open subpaths when they are stroked. Values of LineCap are UndefinedCap, ButtCap, RoundCap, and SquareCap.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableStrokeLineJoin</p></td>
+<td width="21%">
+<p class="western"><font size="2"><a href="Enumerations.html#LineJoin">LineJoin</a> linejoin_</font></p></td>
+<td width="52%">
+<p class="western">Specify the shape to be used at the corners of paths (or other vector shapes) when they are stroked. Values of LineJoin are UndefinedJoin, MiterJoin, RoundJoin, and BevelJoin.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableStrokeOpacity</p></td>
+<td width="21%">
+<p class="western">double opacity_</p></td>
+<td width="52%">
+<p class="western">Opacity to use when drawing lines or object outlines.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableStrokeWidth</p></td>
+<td width="21%">
+<p class="western">double width_</p></td>
+<td width="52%">
+<p class="western">Set width to use when drawing lines or object outlines.</p></td></tr>
+<tr>
+<td rowspan="2" width="27%">
+<p class="western" style="text-align:center">DrawableText</p></td>
+<td width="21%">
+<p class="western">double x_, double y_, std::string text_</p></td>
+<td width="52%">
+<p class="western"><font size="2" style="font-size: 11pt">Annotate image with text using <i>stroke</i> color, font, font pointsize, and <i>box</i> color (text background color), at specified coordinates. If text contains</font> <a href="FormatCharacters.html"><font size="2" style="font-size: 11pt">special format characters</font></a> <font size="2" style="font-size: 11pt">the image filename, type, width, height, or other image attributes may be incorporated in the text (see label()).</font></p></td></tr>
+<tr>
+<td width="21%">
+<p class="western">const double x_, const double y_, const std::string &text_, const std::string &encoding_</p></td>
+<td width="52%">
+<p class="western"><font size="2" style="font-size: 11pt">Annotate image with text represented with text encoding, using current <i>stroke</i> color, font, font pointsize, and <i>box</i> color (text background color), at specified coordinates. If text contains</font> <a href="FormatCharacters.html"><font size="2" style="font-size: 11pt">special format characters</font></a> <font size="2" style="font-size: 11pt">the image filename, type, width, height, or other image attributes may be incorporated in the text (see label()).</font></p>
+<p class="western"><font size="2" style="font-size: 11pt">The text encoding specifies the code set to use for text annotations. The only character encoding which may be specified at this time is "<font face="Courier, monospace">UTF-8</font>" for representing</font> <a href="http://www.unicode.org/"><font size="2" style="font-size: 11pt">Unicode</font></a> <font size="2" style="font-size: 11pt">as a sequence of bytes. Specify an empty string to set text encoding to the system's default. Successful text annotation using Unicode may require fonts designed to support Unicode.</font></p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableTextAntialias</p></td>
+<td width="21%">
+<p class="western">bool flag_</p></td>
+<td width="52%">
+<p class="western">Antialias while drawing text (default true). The main reason to disable text antialiasing is to avoid adding new colors to the image.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center"><a name="DrawableTextDecoration"></a> DrawableTextDecoration</p></td>
+<td width="21%">
+<p class="western"><font size="2"><a href="Enumerations.html#DecorationType">DecorationType</a> decoration_</font></p></td>
+<td width="52%">
+<p class="western">Specify decoration (e.g. UnderlineDecoration) to apply to text.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableTextUnderColor</p></td>
+<td width="21%">
+<p class="western">const Color &color_</p></td>
+<td width="52%">
+<p class="western">Draw a box under rendered text using the specified color.</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableTranslation</p></td>
+<td width="21%">
+<p class="western">double x_, double y_</p></td>
+<td width="52%">
+<p class="western">Apply coordinate translation (set new coordinate origin).</p></td></tr>
+<tr>
+<td width="27%">
+<p class="western" style="text-align:center">DrawableViewbox</p></td>
+<td width="21%">
+<p class="western">ssize_t x1_, ssize_t y1_, ssize_t x2_, ssize_t y2_</p></td>
+<td width="52%">
+<p class="western">Dimensions of the output viewbox. If the image is to be written to a vector format (e.g. MVG or SVG), then a DrawablePushGraphicContext() object should be pushed to the head of the list, followed by a DrawableViewbox() statement to establish the output canvas size. A matching DrawablePopGraphicContext() object should be pushed to the tail of the list.</p></td></tr></table>
+<h2 style="text-align:center">Vector Path Classes</h2>
+<p>The vector paths supported by Magick++ are based on those supported by the <a href="http://www.w3.org/TR/SVG/paths.html">SVG XML specification</a>. Vector paths are not directly drawable, they must first be supplied as a constructor argument to the <a href="#DrawablePath">DrawablePath</a> class in order to create a drawable object. The <a href="#DrawablePath">DrawablePath</a> class effectively creates a drawable compound component which may be replayed as desired. If the drawable compound component consists only of vector path objects using relative coordinates then the object may be positioned on the image by preceding it with a <i>DrawablePath</i> which sets the current drawing coordinate. Alternatively coordinate transforms may be used to <a href="#DrawableTranslation">translate the origin</a> in order to position the object, <a href="#DrawableRotation">rotate</a> it, <a href="#DrawableSkewX">skew</a> it, or <a href="#DrawableScaling">scale</a> it.</p>
+<h3>The "moveto" commands</h3>
+<p style="margin-bottom: 0in">The "moveto" commands establish a new current point. The effect is as if the "pen" were lifted and moved to a new location. A path data segment must begin with either one of the "moveto" commands or one of the "arc" commands. Subsequent "moveto" commands (i.e., when the "moveto" is not the first command) represent the start of a new subpath:</p>
+<p style="margin-bottom: 0in;text-align:center"><b>Moveto Classes</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+<col width="37*" />
+<col width="43*" />
+<col width="177*" />
+<tr>
+<th width="14%">
+<p class="western">Sub-Class</p></th>
+<th width="17%">
+<p class="western">Constructor Signature</p></th>
+<th width="69%">
+<p class="western">Description</p></th></tr>
+<tr>
+<td rowspan="2" width="14%">
+<p class="western" style="text-align:center"><a name="PathMovetoAbs"></a>PathMovetoAbs</p></td>
+<td width="17%">
+<p class="western">const Magick::Coordinate &coordinate_</p></td>
+<td rowspan="4" width="69%">
+<p class="western">Start a new sub-path at the given coordinate. <i>PathMovetoAbs</i> indicates that absolute coordinates will follow; <i>PathMovetoRel</i> indicates that relative coordinates will follow. If a relative moveto appears as the first element of the path, then it is treated as a pair of absolute coordinates. If a moveto is followed by multiple pairs of coordinates, the subsequent pairs are treated as implicit lineto commands.</p></td></tr>
+<tr>
+<td width="17%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td></tr>
+<tr>
+<td rowspan="2" width="14%">
+<p class="western" style="text-align:center"><a name="PathMovetoRel"></a>PathMovetoRel</p></td>
+<td width="17%">
+<p class="western">const Magick::Coordinate &coordinate_</p></td></tr>
+<tr>
+<td width="17%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td></tr></table>
+<h3>The "closepath" command</h3>
+<p style="margin-bottom: 0in">The "closepath" command causes an automatic straight line to be drawn from the current point to the initial point of the current subpath:</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Closepath Classes</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+<col width="37*" />
+<col width="41*" />
+<col width="178*" />
+<tr>
+<th width="14%">
+<p class="western">Sub-Class</p></th>
+<th width="16%">
+<p class="western">Constructor Signature</p></th>
+<th width="69%">
+<p class="western">Description</p></th></tr>
+<tr>
+<td width="14%">
+<p class="western" style="text-align:center"><a name="PathClosePath"></a>PathClosePath</p></td>
+<td width="16%">
+<p class="western">void</p></td>
+<td width="69%">
+<p class="western">Close the current subpath by drawing a straight line from the current point to current subpath's most recent starting point (usually, the most recent moveto point).</p></td></tr></table>
+<h3>The "lineto" commands</h3>
+<p style="margin-bottom: 0in">The various "lineto" commands draw straight lines from the current point to a new point:</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Lineto Classes</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+<col width="56*" />
+<col width="39*" />
+<col width="161*" />
+<tr>
+<th width="22%">
+<p class="western">Sub-Class</p></th>
+<th width="15%">
+<p class="western">Constructor Signature</p></th>
+<th width="63%">
+<p class="western">Description</p></th></tr>
+<tr>
+<td rowspan="2" width="22%">
+<p class="western" style="text-align:center"><a name="PathLinetoAbs"></a>PathLinetoAbs</p></td>
+<td width="15%">
+<p class="western">const Magick::Coordinate& coordinate_</p></td>
+<td rowspan="4" width="63%">
+<p class="western">Draw a line from the current point to the given coordinate which becomes the new current point. <i>PathLinetoAbs</i> indicates that absolute coordinates are used; <i>PathLinetoRel</i> indicates that relative coordinates are used. A number of coordinates pairs may be specified in a list to draw a polyline. At the end of the command, the new current point is set to the final set of coordinates provided.</p></td></tr>
+<tr>
+<td width="15%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td></tr>
+<tr>
+<td rowspan="2" width="22%">
+<p class="western" style="text-align:center"><a name="PathLinetoRel"></a>PathLinetoRel</p></td>
+<td width="15%">
+<p class="western">const Magick::Coordinate& coordinate_</p></td></tr>
+<tr>
+<td width="15%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td></tr>
+<tr>
+<td width="22%">
+<p class="western" style="text-align:center"><a name="PathLinetoHorizontalAbs"></a> PathLinetoHorizontalAbs</p></td>
+<td width="15%">
+<p class="western">double x_</p></td>
+<td rowspan="2" width="63%">
+<p class="western">Draws a horizontal line from the current point (cpx, cpy) to (x, cpy). <i>PathLinetoHorizontalAbs</i> indicates that absolute coordinates are supplied; <i>PathLinetoHorizontalRel</i> indicates that relative coordinates are supplied. At the end of the command, the new current point becomes (x, cpy) for the final value of x.</p></td></tr>
+<tr>
+<td width="22%">
+<p class="western" style="text-align:center"><a name="PathLinetoHorizontalRel"></a> PathLinetoHorizontalRel</p></td>
+<td width="15%">
+<p class="western">double x_</p></td></tr>
+<tr>
+<td width="22%">
+<p class="western" style="text-align:center"><a name="PathLinetoVerticalAbs"></a> PathLinetoVerticalAbs</p></td>
+<td width="15%">
+<p class="western">double y_</p></td>
+<td rowspan="2" width="63%">
+<p class="western">Draws a vertical line from the current point (cpx, cpy) to (cpx, y). <i>PathLinetoVerticalAbs</i> indicates that absolute coordinates are supplied; <i>PathLinetoVerticalRel</i> indicates that relative coordinates are supplied. At the end of the command, the new current point becomes (cpx, y) for the final value of y.</p></td></tr>
+<tr>
+<td width="22%">
+<p class="western" style="text-align:center"><a name="PathLinetoVerticalRel"></a> PathLinetoVerticalRel</p></td>
+<td width="15%">
+<p class="western">double y_</p></td></tr></table>
+<h3>The curve commands</h3>
+<p>These three groups of commands draw curves:</p>
+<ul>
+<li>
+<p style="margin-bottom: 0in"><a href="#cubic%20Bezier">Cubic Bézier commands.</a> A cubic Bézier segment is defined by a start point, an end point, and two control points.</p></li>
+<li>
+<p style="margin-bottom: 0in"><a href="#quadratic%20Bezier">Quadratic Bézier commands.</a> A quadratic Bézier segment is defined by a start point, an end point, and one control point.</p></li>
+<li>
+<p><a href="#elliptical%20arc">Elliptical arc commands.</a> An elliptical arc segment draws a segment of an ellipse.</p></li></ul>
+<h3><a name="cubic Bezier"></a>The cubic Bézier curve commands</h3>
+<p>The cubic Bézier commands depend on the <i>PathCurvetoArgs</i> argument class, which has the constructor signature</p>
+<pre class="code">
+ PathCurvetoArgs( double x1_, double y1_,
+ double x2_, double y2_,
+ double x_, double y_ );
+</pre>
+<p style="margin-bottom: 0in">The commands are as follows:</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Cubic Bézier Curve Classes</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+<col width="54*" />
+<col width="58*" />
+<col width="144*" />
+<tr>
+<th width="21%">
+<p class="western">Sub-Class</p></th>
+<th width="23%">
+<p class="western">Constructor Signature</p></th>
+<th width="56%">
+<p class="western">Description</p></th></tr>
+<tr>
+<td rowspan="2" width="21%">
+<p class="western" style="text-align:center"><a name="PathCurvetoAbs"></a>PathCurvetoAbs</p></td>
+<td width="23%">
+<p class="western">const Magick::PathCurvetoArgs &args_</p></td>
+<td rowspan="4" width="56%">
+<p class="western">Draws a cubic Bézier curve from the current point to (x,y) using (x1,y1) as the control point at the beginning of the curve and (x2,y2) as the control point at the end of the curve. <i>PathCurvetoAbs</i> indicates that absolutecoordinates will follow; <i>PathCurvetoRel</i> indicates that relative coordinates will follow. Multiple sets of coordinates may be specified to draw a polybezier. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></td></tr>
+<tr>
+<td width="23%">
+<p class="western">const std::list<Magick::PathCurvetoArgs> &args_</p></td></tr>
+<tr>
+<td rowspan="2" width="21%">
+<p class="western" style="text-align:center"><a name="PathCurvetoRel"></a>PathCurvetoRel</p></td>
+<td width="23%">
+<p class="western">const Magick::PathCurvetoArgs &args_</p></td></tr>
+<tr>
+<td width="23%">
+<p class="western">const std::list<Magick::PathCurvetoArgs> &args_</p></td></tr>
+<tr>
+<td rowspan="2" width="21%">
+<p class="western" style="text-align:center"><a name="PathSmoothCurvetoAbs"></a> PathSmoothCurvetoAbs</p></td>
+<td width="23%">
+<p class="western">const Magick::Coordinate &coordinates_</p></td>
+<td rowspan="4" width="56%">
+<p class="western">Draws a cubic Bézier curve from the current point to (x,y). The first control point is assumed to be the reflection of the second control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not an <i>PathCurvetoAbs</i>, <i>PathCurvetoRel</i>, <i>PathSmoothCurvetoAbs</i> or <i>PathSmoothCurvetoRel</i>, assume the first control point is coincident with the current point.) (x2,y2) is the second control point (i.e., the control point at the end of the curve). <i>PathSmoothCurvetoAbs</i> indicates that absolute coordinates will follow; <i>PathSmoothCurvetoRel</i> indicates that relative coordinates will follow. Multiple sets of coordinates may be specified to draw a polybezier. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></td></tr>
+<tr>
+<td width="23%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td></tr>
+<tr>
+<td rowspan="2" width="21%">
+<p class="western" style="text-align:center"><a name="PathSmoothCurvetoRel"></a> PathSmoothCurvetoRel</p></td>
+<td width="23%">
+<p class="western">const Magick::Coordinate &coordinates_</p></td></tr>
+<tr>
+<td width="23%">
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td></tr></table>
+<h3><a name="quadratic Bezier"></a>The quadratic Bézier curve commands</h3>
+<p>The quadratic Bézier commands depend on the <i>PathQuadraticCurvetoArgs</i> argument class, which has the constructor signature:</p>
+<pre class="code">
+ PathQuadraticCurvetoArgs( double x1_, double y1_,
+ double x_, double y_ );
+</pre>
+<p style="margin-bottom: 0in">The quadratic Bézier commands are as follows:</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Quadratic Bézier Curve Classes</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="2">
+<tr>
+<th>
+<p class="western">Sub-Class</p></th>
+<th>
+<p class="western">Constructor Signature</p></th>
+<th>
+<p class="western">Description</p></th></tr>
+<tr>
+<td rowspan="2">
+<p class="western" style="text-align:center"><a name="PathQuadraticCurvetoAbs"></a> PathQuadraticCurvetoAbs</p></td>
+<td>
+<p class="western">const Magick::PathQuadraticCurvetoArgs &args_</p></td>
+<td rowspan="4">
+<p class="western">Draws a quadratic Bézier curve from the current point to (x,y) using (x1,y1) as the control point. <i>PathQuadraticCurvetoAbs</i> indicates that absolute coordinates will follow; <i>PathQuadraticCurvetoRel</i> indicates that relative coordinates will follow. Multiple sets of coordinates may be specified to draw a polybezier. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></td></tr>
+<tr>
+<td>
+<p class="western">const std::list<Magick::PathQuadraticCurvetoArgs> &args_</p></td></tr>
+<tr>
+<td rowspan="2">
+<p class="western" style="text-align:center"><a name="PathQuadraticCurvetoRel"></a> PathQuadraticCurvetoRel</p></td>
+<td>
+<p class="western">const Magick::PathQuadraticCurvetoArgs &args_</p></td></tr>
+<tr>
+<td>
+<p class="western">const std::list<Magick::PathQuadraticCurvetoArgs> &args_</p></td></tr>
+<tr>
+<td rowspan="2">
+<p class="western" style="text-align:center"><a name="PathSmoothQuadraticCurvetoAbs"></a> PathSmoothQuadraticCurvetoAbs</p></td>
+<td>
+<p class="western">const Magick::Coordinate &coordinate_</p></td>
+<td rowspan="4">
+<p class="western">Draws a quadratic Bézier curve from the current point to (x,y). The control point is assumed to be the reflection of the control point on the previous<br />
+command relative to the current point. (If there is no previous command or if the previous command was not a <i>PathQuadraticCurvetoAbs</i>, <i>PathQuadraticCurvetoRel</i>, <i>PathSmoothQuadraticCurvetoAbs</i> or <i>PathSmoothQuadraticCurvetoRel</i>, assume the control point is coincident with the current point.) <i>PathSmoothQuadraticCurvetoAbs</i> indicates that absolute coordinates will follow; <i>PathSmoothQuadraticCurvetoRel</i> indicates that relative coordinates will follow. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></td></tr>
+<tr>
+<td>
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td></tr>
+<tr>
+<td rowspan="2">
+<p class="western" style="text-align:center"><a name="PathSmoothQuadraticCurvetoRel"></a> PathSmoothQuadraticCurvetoRel</p></td>
+<td>
+<p class="western">const Magick::Coordinate &coordinate_</p></td></tr>
+<tr>
+<td>
+<p class="western">const std::list<Magick::Coordinate> &coordinates_</p></td></tr></table>
+<h3><a name="elliptical arc"></a>The elliptical arc curve commands</h3>
+<p>The elliptical arc curve commands depend on the <i>PathArcArgs</i> argument class, which has the constructor signature:</p>
+<pre class="code">
+ PathArcArgs( double radiusX_, double radiusY_,
+ double xAxisRotation_, bool largeArcFlag_,
+ bool sweepFlag_, double x_, double y_ );
+</pre>
+<p style="margin-bottom: 0in">The elliptical arc commands are as follows:</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Elliptical Arc Curve Classes</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+<col width="35*" />
+<col width="46*" />
+<col width="175*" />
+<tr>
+<th width="14%">
+<p class="western">Sub-Class</p></th>
+<th width="18%">
+<p class="western">Constructor Signature</p></th>
+<th width="68%">
+<p class="western">Description</p></th></tr>
+<tr>
+<td rowspan="2" width="14%">
+<p class="western" style="text-align:center"><a name="PathArcAbs"></a>PathArcAbs</p></td>
+<td width="18%">
+<p class="western">const Magick::PathArcArgs &coordinates_</p></td>
+<td rowspan="4" width="68%">
+<p class="western">Draws an elliptical arc from the current point to (x, y). The size and orientation of the ellipse are defined by two radii (<i>radiusX</i>, <i>radiusY</i>) and an <i>xAxisRotation</i>, which indicates how the ellipse as a whole is rotated relative to the current coordinate system. The center (cx, cy) of the ellipse is calculated automagically to satisfy the constraints imposed by the other parameters. <i>largeArcFlag</i> and <i>sweepFlag</i> contribute to the automatic calculations and help determine how the arc is drawn. If <i>largeArcFlag</i> is true then draw the larger of the available arcs. If <i>sweepFlag</i> is true, then draw the arc matching a clock-wise rotation.</p></td></tr>
+<tr>
+<td width="18%">
+<p class="western">const std::list<Magick::PathArcArgs> &coordinates_</p></td></tr>
+<tr>
+<td rowspan="2" width="14%">
+<p class="western" style="text-align:center"><a name="PathArcRel"></a>PathArcRel</p></td>
+<td width="18%">
+<p class="western">const Magick::PathArcArgs &coordinates_</p></td></tr>
+<tr>
+<td width="18%">
+<p class="western">const std::list<Magick::PathArcArgs> &coordinates_</p></td></tr></table>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Enumerations</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 style="text-align:center">Enumerations</h1>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><img src="right_triangle.png" name="Graphic1" alt=">" align="bottom" width="15" height="14" border="0" />
+ <b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">Contents</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<ul>
+ <li><p style="margin-bottom: 0in"><a href="#ChannelType">ChannelType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#ClassType">ClassType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#ColorspaceType">ColorspaceType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#CompositeOperator">CompositeOperator</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#CompressionType">CompressionType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#DecorationType">DecorationType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#FillRule">FillRule</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#FilterTypes">FilterTypes</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#GravityType">GravityType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#ImageType">ImageType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#InterlaceType">InterlaceType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#ChannelType">ChannelType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#LineCap">LineCap</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#LineJoin">LineJoin</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#NoiseType">NoiseType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#OrientationType">OrientationType</a></p></li>
+ <li><p style="margin-bottom: 0in"><a href="#PaintMethod">PaintMethod</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#QuantumTypes">QuantumTypes</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#RenderingIntent">RenderingIntent</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#ResolutionType">ResolutionType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#StorageType">StorageType</a>
+ </p></li>
+ <li><p style="margin-bottom: 0in"><a href="#StretchType">StretchType</a>
+ </p></li>
+ <li><p><a href="#StyleType">StyleType</a></p></li>
+ <li><p style="margin-bottom: 0in"><a href="#VirtualPixelMethod">VirtualPixelMethod</a>
+ </p></li>
+</ul>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="ChannelType"></a><img src="right_triangle.png" name="Graphic2" alt=">" align="bottom" width="15" height="14" border="0" />
+ <b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">ChannelType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>ChannelType</i> is used as an
+argument when doing color separations. Use <i>ChannelType </i>when
+extracting a layer from an image. <i>MatteChannel</i> is useful for
+extracting the opacity values from an image. Note that an image may
+be represented in RGB, RGBA, CMYK, or CMYKA, pixel formats and a
+channel may only be extracted if it is valid for the current pixel
+format.</p>
+<p style="text-align:center;margin-bottom: 0in"><b>ChannelType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="3" bgcolor="#cccccc">
+ <col width="86*" />
+ <col width="170*" />
+ <tr>
+ <td width="34%">
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td width="66%">
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>UndefinedChannel</p>
+ </td>
+ <td width="66%">
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>RedChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract red channel (RGB images only)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>CyanChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract cyan channel (CMYK images only)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>GreenChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract green channel (RGB images only)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>MagentaChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract magenta channel (CMYK images only)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>BlueChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract blue channel (RGB images only)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>YellowChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract yellow channel (CMYK images only)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>OpacityChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract matte (opacity values) channel (CMYKA images only)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>BlackChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract black channel (CMYK images only)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%">
+ <p>MatteChannel</p>
+ </td>
+ <td width="66%">
+ <p>Extract matte (opacity values) channel (RGB images only)</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left">
+ <a name="ClassType"></a>
+ <img src="right_triangle.png" name="Graphic3" alt=">" align="bottom" width="15" height="14" border="0" />
+ <b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">ClassType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>ClassType</i> specifies the image
+storage class.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>ClassType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedClass</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>DirectClass</p>
+ </td>
+ <td>
+ <p>Image is composed of pixels which represent literal color
+ values.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PseudoClass</p>
+ </td>
+ <td>
+ <p>Image is composed of pixels which specify an index in a color
+ palette.</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="ColorspaceType"></a>
+ <img src="right_triangle.png" name="Graphic4" alt=">" align="bottom" width="15" height="14" border="0" />
+ <b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">ColorspaceType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p>The ColorspaceType enumeration is used to specify the colorspace
+that quantization (color reduction and mapping) is done under or to
+specify the colorspace when encoding an output image. Colorspaces are
+ways of describing colors to fit the requirements of a particular
+application (e.g. Television, offset printing, color monitors).
+Color reduction, by default, takes place in the <i>RGBColorspace</i>.
+Empirical evidence suggests that distances in color spaces such as
+<i>YUVColorspace</i> or <i>YIQColorspace</i> correspond to perceptual
+color differences more closely han do distances in RGB space. These
+color spaces may give better results when color reducing an image.
+Refer to <i>quantize</i> for more details.
+</p>
+<p style="margin-bottom: 0in">When encoding an output image, the
+colorspaces <i>RGBColorspace</i>, <i>CMYKColorspace</i>, and
+<i>GRAYColorspace</i> may be specified. The <i>CMYKColorspace</i>
+option is only applicable when writing TIFF, JPEG, and Adobe
+Photoshop bitmap (PSD) files.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>ColorspaceType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedColorspace</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CMYKColorspace</p>
+ </td>
+ <td>
+ <p>Cyan-Magenta-Yellow-Black colorspace. CYMK is a subtractive
+ color system used by printers and photographers for the rendering
+ of colors with ink or emulsion, normally on a white surface.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GRAYColorspace</p>
+ </td>
+ <td>
+ <p> Grayscale colorspace</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>HCLColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LabColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LCHabColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LuvColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>OHTAColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RGBColorspace</p>
+ </td>
+ <td>
+ <p>Red-Green-Blue colorspace.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>sRGBColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>scRGBColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>TransparentColorspace</p>
+ </td>
+ <td>
+ <p>The Transparent color space behaves uniquely in that it
+ preserves the matte channel of the image if it exists.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>XYZColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>YCbCrColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>YCCColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>YIQColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>YPbPrColorspace</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>YUVColorspace</p>
+ </td>
+ <td>
+ <p>Y-signal, U-signal, and V-signal colorspace. YUV is most widely
+ used to encode color for use in television transmission.</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="CompositeOperator"></a>
+ <img src="right_triangle.png" name="Graphic5" alt=">" align="bottom" width="15" height="14" border="0" />
+ <b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">CompositeOperator</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>CompositeOperator</i> is used to
+select the image composition algorithm used to compose a <i>composite
+image</i> with an <i>image</i>. By default, each of the composite
+image pixels are replaced by the corresponding image tile pixel.
+Specify <i>CompositeOperator</i> to select a different algorithm.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>CompositeOperator</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedCompositeOp</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>OverCompositeOp</p>
+ </td>
+ <td>
+ <p>The result is the union of the the two image shapes with the
+ <i>composite image</i> obscuring <i>image</i> in the region of
+ overlap.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>InCompositeOp</p>
+ </td>
+ <td>
+ <p>The result is a simply <i>composite image </i>cut by the shape
+ of image. None of the image data of <i>image</i> is included in
+ the result.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>OutCompositeOp</p>
+ </td>
+ <td>
+ <p>The resulting image is <i>composite image</i> with the shape of
+ <i>image</i> cut out.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>AtopCompositeOp</p>
+ </td>
+ <td>
+ <p>The result is the same shape as image <i>image</i>, with
+ <i>composite image</i> obscuring <i>image</i> there the image
+ shapes overlap. Note that this differs from <i>OverCompositeOp</i>
+ because the portion of <i>composite image</i> outside of <i>image</i>'s
+ shape does not appear in the result.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>XorCompositeOp</p>
+ </td>
+ <td>
+ <p>The result is the image data from both c<i>omposite image</i>
+ and <i>image</i> that is outside the overlap region. The overlap
+ region will be blank.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PlusCompositeOp</p>
+ </td>
+ <td>
+ <p>The result is just the sum of the image data. Output
+ values are cropped to 255 (no overflow). This operation is
+ independent of the matte channels.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MinusCompositeOp</p>
+ </td>
+ <td>
+ <p>The result of <i>composite image </i>- <i>image</i>, with
+ overflow cropped to zero. The matte chanel is ignored (set to 255,
+ full coverage).</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>AddCompositeOp</p>
+ </td>
+ <td>
+ <p>The result of <i>composite image</i> + <i>image</i>, with
+ overflow wrapping around (mod 256).</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SubtractCompositeOp</p>
+ </td>
+ <td>
+ <p>The result of <i>composite image </i>- <i>image</i>, with
+ underflow wrapping around (mod 256). The add and subtract
+ operators can be used to perform reverible transformations.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>DifferenceCompositeOp</p>
+ </td>
+ <td>
+ <p>The result of abs(c<i>omposite image </i>- <i>image</i>). This
+ is useful for comparing two very similar images.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MultiplyCompositeOp</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BumpmapCompositeOp</p>
+ </td>
+ <td>
+ <p>The result <i>image</i> shaded by <i>composite image.</i></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CopyCompositeOp</p>
+ </td>
+ <td>
+ <p>The resulting <i>image</i> is image replaced with c<i>omposite
+ image</i>. Here the matte information is ignored.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CopyRedCompositeOp</p>
+ </td>
+ <td>
+ <p>The resulting image is the red layer in <i>image</i> replaced
+ with the red layer in <i>composite image</i>. The other layers are
+ copied untouched.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CopyGreenCompositeOp</p>
+ </td>
+ <td>
+ <p>The resulting image is the green layer in <i>image</i> replaced
+ with the green layer in <i>composite image</i>. The other layers
+ are copied untouched.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CopyBlueCompositeOp</p>
+ </td>
+ <td>
+ <p>The resulting image is the blue layer in <i>image</i> replaced
+ with the blue layer in <i>composite image</i>. The other layers
+ are copied untouched.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CopyOpacityCompositeOp</p>
+ </td>
+ <td>
+ <p>The resulting image is the matte layer in <i>image</i> replaced
+ with the matte layer in <i>composite image</i>. The other layers
+ are copied untouched.
+ </p>
+ <p>The image compositor requires a matte, or alpha channel in the
+ image for some operations. This extra channel usually defines a
+ mask which represents a sort of a cookie-cutter for the image.
+ This is the case when matte is 255 (full coverage) for pixels
+ inside the shape, zero outside, and between zero and 255 on the
+ boundary. For certain operations, if <i>image</i> does not
+ have a matte channel, it is initialized with 0 for any pixel
+ matching in color to pixel location (0,0), otherwise 255 (to work
+ properly <i>borderWidth</i> must be 0).</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ClearCompositeOp</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>DissolveCompositeOp</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>DisplaceCompositeOp</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ModulateCompositeOp</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ThresholdCompositeOp</p>
+ </td>
+ <td>
+ <p> </p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="CompressionType"></a><img src="right_triangle.png" name="Graphic6" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">CompressionType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>CompressionType</i> is used to
+express the desired compression type when encoding an image. Be aware
+that most image types only support a sub-set of the available
+compression types. If the compression type specified is incompatable
+with the image, ImageMagick selects a compression type compatable
+with the image type.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>CompressionType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedCompression</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NoCompression</p>
+ </td>
+ <td>
+ <p>No compression</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BZipCompression</p>
+ </td>
+ <td>
+ <p>BZip (Burrows-Wheeler block-sorting text compression algorithm
+ and Huffman coding) as used by bzip2 utilities</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>FaxCompression</p>
+ </td>
+ <td>
+ <p>CCITT Group 3 FAX compression</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>Group4Compression</p>
+ </td>
+ <td>
+ <p>CCITT Group 4 FAX compression (used only for TIFF)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>JPEGCompression</p>
+ </td>
+ <td>
+ <p>JPEG compression</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LZWCompression</p>
+ </td>
+ <td>
+ <p>Lempel-Ziv-Welch (LZW) compression (caution, patented by
+ Unisys)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RunlengthEncodedCompression</p>
+ </td>
+ <td>
+ <p>Run-Length encoded (RLE) compression</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ZipCompression</p>
+ </td>
+ <td>
+ <p>Lempel-Ziv compression (LZ77) as used in PKZIP and GNU gzip.</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="DecorationType"></a>
+ <img src="right_triangle.png" name="Graphic7" alt=">" align="bottom" width="15" height="14" border="0" />
+ <b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">DecorationType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">The <i>DecorationType </i>enumerations
+are used to specify line decorations of rendered text.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>DecorationType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NoDecoration</p>
+ </td>
+ <td>
+ <p>No decoration</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UnderlineDecoration</p>
+ </td>
+ <td>
+ <p>Underlined text</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>OverlineDecoration</p>
+ </td>
+ <td>
+ <p>Overlined text</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LineThroughDecoration</p>
+ </td>
+ <td>
+ <p>Strike-through text</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="EndianType"></a><img src="right_triangle.png" name="Graphic8" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">EndianType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">The <i>EndianType </i>enumerations are
+used to specify the endian option for formats which support it (e.g.
+TIFF).
+</p>
+<p style="margin-bottom: 0in"><br />
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>EndianType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedEndian</p>
+ </td>
+ <td>
+ <p>Not defined (default)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LSBEndian</p>
+ </td>
+ <td>
+ <p>Little endian (like Intel X86 and DEC Alpha)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MSBEndian</p>
+ </td>
+ <td>
+ <p>Big endian (like Motorola 68K, Mac PowerPC, & SPARC)</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="FillRule"></a><img src="right_triangle.png" name="Graphic9" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font color="#ffffff">FillRule</font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>FillRule</i> specifies the algorithm
+which is to be used to determine what parts of the canvas are
+included inside the shape. See the documentation on SVG's <a href="http://www.w3.org/TR/SVG/painting.html#FillRuleProperty">fill-rule</a>
+property for usage details.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>FillRule</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p>UndefinedRule</p>
+ </td>
+ <td>
+ <p>Fill rule not specified</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>EvenOddRule</p>
+ </td>
+ <td>
+ <p>See SVG fill-rule <i>evenodd</i> rule.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NonZeroRule</p>
+ </td>
+ <td>
+ <p>See SVG fill-rule <i>nonzero</i> rule.</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="FilterTypes"></a><img src="right_triangle.png" name="Graphic10" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">FilterTypes</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>FilterTypes</i> is used to adjust
+the filter algorithm used when resizing images. Different filters
+experience varying degrees of success with various images and can
+take sipngicantly different amounts of processing time.
+ImageMagick uses the <i>LanczosFilter</i> by default since this
+filter has been shown to provide the best results for most images in
+a reasonable amount of time. Other filter types (e.g. <i>TriangleFilter</i>)
+may execute much faster but may show artifacts when the image is
+re-sized or around diagonal lines. The only way to be sure is to test
+the filter with sample images.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>FilterTypes</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedFilter</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PointFilter</p>
+ </td>
+ <td>
+ <p>Point Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BoxFilter</p>
+ </td>
+ <td>
+ <p>Box Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>TriangleFilter</p>
+ </td>
+ <td>
+ <p>Triangle Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>HermiteFilter</p>
+ </td>
+ <td>
+ <p>Hermite Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>HanningFilter</p>
+ </td>
+ <td>
+ <p>Hanning Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>HammingFilter</p>
+ </td>
+ <td>
+ <p>Hamming Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BlackmanFilter</p>
+ </td>
+ <td>
+ <p>Blackman Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GaussianFilter</p>
+ </td>
+ <td>
+ <p>Gaussian Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>QuadraticFilter</p>
+ </td>
+ <td>
+ <p>Quadratic Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CubicFilter</p>
+ </td>
+ <td>
+ <p>Cubic Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CatromFilter</p>
+ </td>
+ <td>
+ <p>Catrom Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MitchellFilter</p>
+ </td>
+ <td>
+ <p>Mitchell Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LanczosFilter</p>
+ </td>
+ <td>
+ <p>Lanczos Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BesselFilter</p>
+ </td>
+ <td>
+ <p>Bessel Filter</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SincFilter</p>
+ </td>
+ <td>
+ <p>Sinc Filter</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="GravityType"></a><img src="right_triangle.png" name="Graphic11" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">GravityType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>GravityType</i> specifies
+positioning of an object (e.g. text, image) within a bounding region
+(e.g. an image). Gravity provides a convenient way to locate objects
+irrespective of the size of the bounding region, in other words, you
+don't need to provide absolute coordinates in order to position an
+object. A common default for gravity is <i>NorthWestGravity</i>.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>GravityType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ForgetGravity</p>
+ </td>
+ <td>
+ <p>Don't use gravity.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NorthWestGravity</p>
+ </td>
+ <td>
+ <p>Position object at top-left of region.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NorthGravity</p>
+ </td>
+ <td>
+ <p>Postiion object at top-center of region</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NorthEastGravity</p>
+ </td>
+ <td>
+ <p>Position object at top-right of region</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>WestGravity</p>
+ </td>
+ <td>
+ <p>Position object at left-center of region</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CenterGravity</p>
+ </td>
+ <td>
+ <p>Position object at center of region</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>EastGravity</p>
+ </td>
+ <td>
+ <p>Position object at right-center of region</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SouthWestGravity</p>
+ </td>
+ <td>
+ <p>Position object at left-bottom of region</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SouthGravity</p>
+ </td>
+ <td>
+ <p>Position object at bottom-center of region</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SouthEastGravity</p>
+ </td>
+ <td>
+ <p>Position object at bottom-right of region</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="ImageType"></a><img src="right_triangle.png" name="Graphic12" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">ImageType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>ImageType</i> indicates the type
+classification of the image.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>ImageType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedType</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BilevelType</p>
+ </td>
+ <td>
+ <p>Monochrome image</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GrayscaleType</p>
+ </td>
+ <td>
+ <p>Grayscale image</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GrayscaleMatteType</p>
+ </td>
+ <td>
+ <p>Grayscale image with opacity</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PaletteType</p>
+ </td>
+ <td>
+ <p>Indexed color (palette) image</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PaletteMatteType</p>
+ </td>
+ <td>
+ <p>Indexed color (palette) image with opacity</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>TrueColorType</p>
+ </td>
+ <td>
+ <p>Truecolor image</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>TrueColorMatteType</p>
+ </td>
+ <td>
+ <p>Truecolor image with opacity</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ColorSeparationType</p>
+ </td>
+ <td>
+ <p>Cyan/Yellow/Magenta/Black (CYMK) image</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="InterlaceType"></a><img src="right_triangle.png" name="Graphic13" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">InterlaceType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p><i>InterlaceType</i> specifies the ordering of the red, green, and
+blue pixel information in the image. Interlacing is usually used to
+make image information available to the user faster by taking
+advantage of the space vs time tradeoff. For example, interlacing
+allows images on the Web to be recognizable sooner and satellite
+images to accumulate/render with image resolution increasing over
+time.
+</p>
+<p style="margin-bottom: 0in">Use <i>LineInterlace</i> or
+<i>PlaneInterlace</i> to create an interlaced GIF or progressive JPEG
+image.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>InterlaceType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedInterlace</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NoInterlace</p>
+ </td>
+ <td>
+ <p>Don't interlace image (RGBRGBRGBRGBRGBRGB...)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LineInterlace</p>
+ </td>
+ <td>
+ <p>Use scanline interlacing (RRR...GGG...BBB...RRR...GGG...BBB...)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PlaneInterlace</p>
+ </td>
+ <td>
+ <p>Use plane interlacing (RRRRRR...GGGGGG...BBBBBB...)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PartitionInterlace</p>
+ </td>
+ <td>
+ <p>Similar to plane interlaing except that the different planes
+ are saved to individual files (e.g. image.R, image.G, and image.B)</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="ChannelType1"></a><img src="right_triangle.png" name="Graphic14" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">ChannelType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>ChannelType</i> is used as an
+argument when doing color separations. Use <i>ChannelType</i> when
+extracting a layer from an image. <i>MatteLayer</i> is useful for
+extracting the opacity values from an image.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>ChannelType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedLayer</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RedLayer</p>
+ </td>
+ <td>
+ <p>Select red layer</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GreenLayer</p>
+ </td>
+ <td>
+ <p>Select green layer</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BlueLayer</p>
+ </td>
+ <td>
+ <p>Select blue layer</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MatteLayer</p>
+ </td>
+ <td>
+ <p>Select matte (opacity values) layer</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="LineCap"></a><img src="right_triangle.png" name="Graphic15" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">LineCap</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">The <i>LineCap</i> enumerations specify
+shape to be used at the end of open subpaths when they are stroked.
+See SVG's '<a href="http://www.w3.org/TR/SVG/painting.html#StrokeLinecapProperty">stroke-linecap'</a>
+for examples.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>LineCap</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedCap</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ButtCap</p>
+ </td>
+ <td>
+ <p>Square ending.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RoundCap</p>
+ </td>
+ <td>
+ <p>Rounded ending (half-circle end with radius of 1/2 stroke
+ width).</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SquareCap</p>
+ </td>
+ <td>
+ <p>Square ending, extended by 1/2 the stroke width at end.</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="LineJoin"></a><img src="right_triangle.png" name="Graphic16" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">LineJoin</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">The <i>LineJoin</i> enumerations
+specify the shape to be used at the corners of paths or basic shapes
+when they are stroked. See SVG's '<a href="http://www.w3.org/TR/SVG/painting.html#StrokeLinejoinProperty">stroke-linejoin'</a>
+for examples.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>ChannelType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedJoin</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MiterJoin</p>
+ </td>
+ <td>
+ <p>Sharp-edged join</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RoundJoin</p>
+ </td>
+ <td>
+ <p>Rounded-edged join</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BevelJoin</p>
+ </td>
+ <td>
+ <p>Beveled-edged join</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="NoiseType"></a><img src="right_triangle.png" name="Graphic17" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">NoiseType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>NoiseType</i> is used as an argument
+to select the type of noise to be added to the image.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>NoiseType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UniformNoise</p>
+ </td>
+ <td>
+ <p>Uniform noise</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GaussianNoise</p>
+ </td>
+ <td>
+ <p>Gaussian noise</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MultiplicativeGaussianNoise</p>
+ </td>
+ <td>
+ <p>Multiplicative Gaussian noise</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ImpulseNoise</p>
+ </td>
+ <td>
+ <p>Impulse noise</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>LaplacianNoise</p>
+ </td>
+ <td>
+ <p>Laplacian noise</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PoissonNoise</p>
+ </td>
+ <td>
+ <p>Poisson noise</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="0">
+ <col width="256*" />
+ <tr>
+ <td width="100%" bgcolor="#52799e">
+ <p align="left"><a name="PaintMethod1"></a><a name="OrientationType"></a>
+ <img src="right_triangle.png" name="Graphic25" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">OrientationType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p align="left" style="margin-bottom: 0in"><i>OrientationType</i>
+specifies the orientation of the image. Useful for when the image is
+produced via a different ordinate system, the camera was turned on
+its side, or the page was scanned sideways.</p>
+<p style="text-align:center;margin-bottom: 0in"><b>OrientationType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="3" bgcolor="#cccccc">
+ <col width="65*" />
+ <col width="75*" />
+ <col width="115*" />
+ <tr>
+ <td width="25%">
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td width="29%">
+ <p style="text-align:center"><b>Scanline Direction</b></p>
+ </td>
+ <td width="45%">
+ <p style="text-align:center"><b>Frame Direction</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>UndefinedOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Unknown</p>
+ </td>
+ <td width="45%">
+ <p>Unknown</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>TopLeftOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Left to right</p>
+ </td>
+ <td width="45%">
+ <p>Top to bottom</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>TopRightOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Right to left</p>
+ </td>
+ <td width="45%">
+ <p>Top to bottom</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>BottomRightOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Right to left</p>
+ </td>
+ <td width="45%">
+ <p>Bottom to top</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>BottomLeftOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Left to right</p>
+ </td>
+ <td width="45%">
+ <p>Bottom to top</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>LeftTopOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Top to bottom</p>
+ </td>
+ <td width="45%">
+ <p>Left to right</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>RightTopOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Top to bottom</p>
+ </td>
+ <td width="45%">
+ <p>Right to left</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>RightBottomOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Bottom to top</p>
+ </td>
+ <td width="45%">
+ <p>Right to left</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%">
+ <p>LeftBottomOrientation</p>
+ </td>
+ <td width="29%">
+ <p>Bottom to top</p>
+ </td>
+ <td width="45%">
+ <p>Left to right</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="PaintMethod"></a><img src="right_triangle.png" name="Graphic18" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">PaintMethod</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>PaintMethod</i> specifies how pixel
+colors are to be replaced in the image. It is used to select the
+pixel-filling algorithm employed.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>PaintMethod</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PointMethod</p>
+ </td>
+ <td>
+ <p>Replace pixel color at point.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ReplaceMethod</p>
+ </td>
+ <td>
+ <p>Replace color for all image pixels matching color at point.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>FloodfillMethod</p>
+ </td>
+ <td>
+ <p>Replace color for pixels surrounding point until encountering
+ pixel that fails to match color at point.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>FillToBorderMethod</p>
+ </td>
+ <td>
+ <p>Replace color for pixels surrounding point until encountering
+ pixels matching border color.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ResetMethod</p>
+ </td>
+ <td>
+ <p>Replace colors for <b>all</b> pixels in image with pen color.</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="QuantumTypes"></a><img src="right_triangle.png" name="Graphic19" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">QuantumTypes</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><i>QuantumTypes</i> is used to indicate
+the source or destination format of entire pixels, or components of
+pixels ("Quantums") while they are being read, or written
+to, a pixel cache. The validity of these format specifications
+depends on whether the Image pixels are in RGB format, RGBA format,
+or CMYK format. The pixel Quantum size is determined by the Image
+depth (eight or sixteen bits).
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>RGB(A) Image Quantums</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>IndexQuantum</p>
+ </td>
+ <td>
+ <p>PseudoColor colormap indices (valid only for image with
+ colormap)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RedQuantum</p>
+ </td>
+ <td>
+ <p>Red pixel Quantum</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GreenQuantum</p>
+ </td>
+ <td>
+ <p>Green pixel Quantum</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BlueQuantum</p>
+ </td>
+ <td>
+ <p>Blue pixel Quantum</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>AlphaQuantum</p>
+ </td>
+ <td>
+ <p>Alpha Quantum</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>CMY(K)(A) Image Quantum</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CyanQuantum</p>
+ </td>
+ <td>
+ <p>Cyan pixel Quantum</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MagentaQuantum</p>
+ </td>
+ <td>
+ <p>Magenta pixel Quantum</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>YellowQuantum</p>
+ </td>
+ <td>
+ <p>Yellow pixel Quantum</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BlackQuantum</p>
+ </td>
+ <td>
+ <p>Black pixel Quantum</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>AlphaQuantum</p>
+ </td>
+ <td>
+ <p>Alpha Quantum</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Grayscale Image
+Quantums</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GrayQuantum</p>
+ </td>
+ <td>
+ <p>Gray pixel</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GrayOpacityQuantum</p>
+ </td>
+ <td>
+ <p>Pixel opacity</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>AlphaQuantum</p>
+ </td>
+ <td>
+ <p>Alpha Quantum</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>Entire Pixels
+(Expressed in Byte Order)</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RGBQuantum</p>
+ </td>
+ <td>
+ <p>RGB pixel (24 or 48 bits)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RGBAQuantum</p>
+ </td>
+ <td>
+ <p>RGBA pixel (32 or 64 bits)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CMYKQuantum</p>
+ </td>
+ <td>
+ <p>CMYK pixel (32 or 64 bits)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CMYKAQuantum</p>
+ </td>
+ <td>
+ <p>CMYKA pixel (40 or 80 bits)</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="RenderingIntent"></a><img src="right_triangle.png" name="Graphic20" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">RenderingIntent</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p>Rendering intent is a concept defined by <a href="http://www.color.org/">ICC</a>
+Spec ICC.1:1998-09, "File Format for Color Profiles".
+ImageMagick uses <i>RenderingIntent</i> in order to support ICC
+Color Profiles.
+</p>
+<p style="margin-bottom: 0in">From the specification: "Rendering
+intent specifies the style of reproduction to be used during the
+evaluation of this profile in a sequence of profiles. It applies
+specifically to that profile in the sequence and not to the entire
+sequence. Typically, the user or application will set the rendering
+intent dynamically at runtime or embedding time."
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>RenderingIntent</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedIntent</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SaturationIntent</p>
+ </td>
+ <td>
+ <p>A rendering intent that specifies the saturation of the pixels
+ in the image is preserved perhaps at the expense of accuracy in
+ hue and lightness.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PerceptualIntent</p>
+ </td>
+ <td>
+ <p>A rendering intent that specifies the full gamut of the image
+ is compressed or expanded to fill the gamut of the destination
+ device. Gray balance is preserved but colorimetric accuracy might
+ not be preserved.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>AbsoluteIntent</p>
+ </td>
+ <td>
+ <p>Absolute colorimetric</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RelativeIntent</p>
+ </td>
+ <td>
+ <p>Relative colorimetric</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="ResolutionType"></a><img src="right_triangle.png" name="Graphic21" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">ResolutionType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">By default, ImageMagick defines
+resolutions in pixels per inch. <i>ResolutionType</i> provides a
+means to adjust this.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>ResolutionType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedResolution</p>
+ </td>
+ <td>
+ <p>Unset value.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PixelsPerInchResolution</p>
+ </td>
+ <td>
+ <p>Density specifications are specified in units of pixels per
+ inch (english units).</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>PixelsPerCentimeterResolution</p>
+ </td>
+ <td>
+ <p>Density specifications are specified in units of pixels per
+ centimeter (metric units).</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="StorageType"></a><img src="right_triangle.png" name="Graphic22" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">StorageType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">The <i>StorageType</i> enumerations are
+used to specify the storage format of pixels in the source or
+destination pixel array.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>StorageType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CharPixel</p>
+ </td>
+ <td>
+ <p>Character type</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ShortPixel</p>
+ </td>
+ <td>
+ <p>Short type</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>IntegerPixel</p>
+ </td>
+ <td>
+ <p>Integer type</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>FloatPixel</p>
+ </td>
+ <td>
+ <p>Float type</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>DoublePixel</p>
+ </td>
+ <td>
+ <p>Double type</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="StretchType"></a><img src="right_triangle.png" name="Graphic23" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">StretchType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">The <i>StretchType</i> enumerations are
+used to specify the relative width of a font to the regular width for
+the font family. If the width is not important, the <i>AnyStretch</i>
+enumeration may be specified for a wildcard match.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>StretchType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>AnyStretch</p>
+ </td>
+ <td>
+ <p>Wildcard match for font stretch</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NormalStretch</p>
+ </td>
+ <td>
+ <p>Normal width font</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UltraCondensedStretch</p>
+ </td>
+ <td>
+ <p>Ultra-condensed (narrowest) font</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ExtraCondensedStretch</p>
+ </td>
+ <td>
+ <p>Extra-condensed font</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CondensedStretch</p>
+ </td>
+ <td>
+ <p>Condensed font</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SemiCondensedStretch</p>
+ </td>
+ <td>
+ <p>Semi-Condensed font</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>SemiExpandedStretch</p>
+ </td>
+ <td>
+ <p>Semi-Expanded font</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ExpandedStretch</p>
+ </td>
+ <td>
+ <p>Expanded font</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ExtraExpandedStretch</p>
+ </td>
+ <td>
+ <p>Extra-Expanded font</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UltraExpandedStretch</p>
+ </td>
+ <td>
+ <p>Ultra-expanded (widest) font</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="StyleType"></a><img src="right_triangle.png" name="Graphic24" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">StyleType</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">The <i>StyleType</i> enumerations are
+used to specify the style (e.g. Italic) of a font. If the style is
+not important, the <i>AnyStyle</i> enumeration may be specified for a
+wildcard match.
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>StyleType</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>AnyStyle</p>
+ </td>
+ <td>
+ <p>Wildcard match for font style</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>NormalStyle</p>
+ </td>
+ <td>
+ <p>Normal font style</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ItalicStyle</p>
+ </td>
+ <td>
+ <p>Italic font style</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>ObliqueStyle</p>
+ </td>
+ <td>
+ <p>Oblique font style</p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in"><br />
+</p>
+<table width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td bgcolor="#52799e">
+ <p align="left"><a name="VirtualPixelMethod"></a><img src="right_triangle.png" name="Graphic8" alt=">" align="bottom" width="15" height="14" border="0" /><b><font size="4"><font face="Helvetica, Arial"><font color="#ffffff">VirtualPixelMethod</font></font></font></b></p>
+ </td>
+ </tr>
+</table>
+<p style="margin-bottom: 0in">The <i>VirtualPixelMethod </i>enumerations are
+used to specify the virtual pixel method.
+</p>
+<p style="margin-bottom: 0in"><br />
+</p>
+<p style="text-align:center;margin-bottom: 0in"><b>VirtualPixelMethod</b></p>
+<table width="100%" border="1" cellpadding="1" cellspacing="1" bgcolor="#cccccc">
+ <tr>
+ <td>
+ <p style="text-align:center"><b>Enumeration</b></p>
+ </td>
+ <td>
+ <p style="text-align:center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>UndefinedVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>Not defined</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BackgroundVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>the area surrounding the image is the background color
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>BlackVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>the area surrounding the image is black</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>CheckerTileVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>alternate squares with image and background color
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>DitherVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>non-random 32x32 dithered pattern
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>EdgeVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>extend the edge pixel toward infinity
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>GrayVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>the area surrounding the image is gray
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>HorizontalTileVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>horizontally tile the image, background color above/below</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>HorizontalTileEdgeVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>horizontally tile the image and replicate the side edge pixels</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>MirrorVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>mirror tile the image
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>RandomVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>choose a random pixel from the image
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>TileVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>tile the image (default)
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>TransparentVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>the area surrounding the image is transparent blackness
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>VerticalTileVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>vertically tile the image, sides are background color
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>VerticalTileEdgeVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>vertically tile the image and replicate the side edge pixels
+</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>WhiteVirtualPixelMethod</p>
+ </td>
+ <td>
+ <p>the area surrounding the image is white
+</p>
+ </td>
+ </tr>
+</table>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Exceptions </title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Magick::Exception Classes</h1>
+<p><i>Exception</i> represents the base class of objects thrown when
+Magick++reports an error. Magick++ throws C++ exceptions synchronous
+with the operation where the error occurred. This allows errors to be
+trapped within the enclosing code (perhaps the code to process a
+single image) while allowing the code to be written with a simple
+coding style.</p>
+<p>A try/catch block should be placed around any sequence of
+operations which can be considered an important body of work. For
+example, if your program processes lists of images and some of these
+images may be defective, by placing the try/catch block around the
+entire sequence of code that processes one image (including
+instantiating the image object), you can minimize the overhead of
+error checking while ensuring that all objects created to deal with
+that object are safely destroyed (C++ exceptions unroll the stack
+until the enclosing try block, destroying any created objects).
+</p>
+<p>The pseudo code for the main loop of your program may look like:
+</p>
+<div class="viewport">
+using namespace std;
+for infile in list
+{
+ try {
+ // Construct an image instance first so that we don't have to worry
+ // about object construction failure due to a minor warning exception
+ // being thrown.
+ Magick::Image image;
+ try {
+ // Try reading image file
+ image.read(infile);
+ }
+ catch( Magick::WarningCoder &warning )
+ {
+ // Process coder warning while loading file (e.g. TIFF warning)
+ // Maybe the user will be interested in these warnings (or not).
+ // If a warning is produced while loading an image, the image
+ // can normally still be used (but not if the warning was about
+ // something important!)
+ cerr << "Coder Warning: " << warning.what() << endl;
+ }
+ catch( Magick::Warning &warning )
+ {
+ // Handle any other Magick++ warning.
+ cerr << "Warning: " << warning.what() << endl;
+ }
+ catch( Magick::ErrorFileOpen &error )
+ {
+ // Process Magick++ file open error
+ cerr << "Error: " << error.what() << endl;
+ continue; // Try next image.
+ }
+ try {
+ image.rotate(90);
+ image.write("outfile");
+ }
+ catch ( MagickExeption & error)
+ {
+ // Handle problem while rotating or writing outfile.
+ cerr << "Caught Magick++ exception: " << error.what() << endl;
+ }
+ }
+ catch( std::exception & error )
+ {
+ // Process any other exceptions derived from standard C++ exception
+ cerr << "Caught C++ STD exception: " << error.what() << endl;
+ }
+ catch( ... )
+ {
+ // Process *any* exception (last-ditch effort). There is not a lot
+ // you can do here other to retry the operation that failed, or exit
+ }
+}
+</div>
+<p>The desired location and number of try/catch blocks in your program
+depends how sophisticated its error handling must be. Very simple
+programs may use just one try/catch block.</p>
+<p>The <i>Exception</i> class is derived from the C++ standard
+exception class. This means that it contains a C++ string containing
+additional information about the error (e.g to display to the user).
+Obtain access to this string via the what() method.  For
+example:
+</p>
+<pre class="code">
+catch( Exception & error_ )
+ {
+ cout << "Caught exception: " << error_.what() << endl;
+ }
+</pre>
+<p>The classes <i>Warning</i> and <i>Error</i> derive from the
+<i>Exception</i> class. Exceptions derived from <i>Warning</i> are
+thrown to represent non-fatal errors which may effect the
+completeness or quality of the result (e.g. one image provided as an
+argument to montage is defective). In most cases, a <i>Warning</i>
+exception may be ignored by catching it immediately, processing it
+(e.g. printing a diagnostic) and continuing on. Exceptions derived
+from <i>Error</i> are thrown to represent fatal errors that can not
+produce a valid result (e.g. attempting to read a file which does not
+exist).
+</p>
+<p style="margin-bottom: 0in">The specific derived exception classes
+are shown in the following tables:
+</p>
+<p align="center" style="margin-bottom: 0in"><b>Warning Sub-Classes</b></p>
+<ul><table width="100%" border="1" cellpadding="2" cellspacing="3">
+ <col width="70*" />
+ <col width="186*" />
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2"><b>Warning</b></font></p>
+ </td>
+ <td width="73%">
+ <p align="center"><font size="2"><b>Warning Description</b></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningUndefined</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Unspecified warning type.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningBlob</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium; text-decoration: none"><font size="2">NOT
+ CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningCache</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium; text-decoration: none"><font size="2">NOT
+ CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningCoder</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Warnings issued by some coders.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningConfigure</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium; text-decoration: none"><font size="2">NOT
+ CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningCorruptImage</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Warning issued when an image is determined to be
+ corrupt.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningDelegate</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Warnings reported by the delegate (interface to
+ external programs) subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningDraw</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Warnings reported by the rendering subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningFileOpen</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Warning reported when The image file could not be
+ opened (permission problem, wrong file type, or does not exist).</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningImage</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium"><font size="2">NOT CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningMissingDelegate</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium"><font size="2">NOT CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningModule</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium"><font size="2">NOT CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningMonitor</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium"><font size="2">NOT CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningOption</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Warning reported when an option is malformed or
+ out of range.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningRegistry</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium"><font size="2">NOT CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningResourceLimit</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Warning reported when a program resource is
+ exhausted (e.g. not enough memory).</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningStream</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium"><font size="2">NOT CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningType</font></p>
+ </td>
+ <td width="73%">
+ <p style="font-weight: medium"><font size="2">NOT CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="27%">
+ <p align="center"><font size="2">WarningXServer</font></p>
+ </td>
+ <td width="73%">
+ <p><font size="2">Warnings reported by the X11 subsystem.</font></p>
+ </td>
+ </tr>
+</table></ul>
+<p style="margin-bottom: 0in"><br />
+</p>
+<p align="center" style="margin-bottom: 0in"><b>Error Sub-Classes</b></p>
+<ul><table width="100%" border="1" cellpadding="2" cellspacing="3">
+ <col width="71*" />
+ <col width="185*" />
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2"><b>Error</b></font></p>
+ </td>
+ <td width="72%">
+ <p align="center"><font size="2"><b>Error Description</b></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorUndefined</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Unspecified error type.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorBlob</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported by BLOB I/O subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorCache</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported by the pixel cache subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorCoder</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported by coders (image format support).</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorConfigure</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Errors reported while loading configuration files.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorCorruptImage</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported when the image file is corrupt.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorDelegate</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Errors reported by the delegate (interface to
+ external programs) subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorDraw</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported while drawing on image.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorFileOpen</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported when the image file can not be
+ opened.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorImage</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Errors reported while drawing.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorMissingDelegate</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported when an add-on library or program
+ is necessary in order to support the requested operation.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorModule</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Errors reported by the module loader subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorMonitor</font></p>
+ </td>
+ <td width="72%">
+ <p style="font-weight: medium"><font size="2">NOT CURRENTLY USED</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorOption</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported when an option is malformed or out
+ of range.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorRegistry</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Errors reported by the image/BLOB registry
+ subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorResourceLimit</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Error reported when a program resource is
+ exhausted (e.g. not enough memory).</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorStream</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Errors reported by the pixel stream subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorType</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Errors reported by the type (font) rendering
+ subsystem.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="28%">
+ <p align="center"><font size="2">ErrorXServer</font></p>
+ </td>
+ <td width="72%">
+ <p><font size="2">Errors reported by the X11 subsystem.</font></p>
+ </td>
+ </tr>
+</table></ul>
+<p><br /><br />
+</p>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Annotating an Image</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Special Format Characters</h1>
+<p style="margin-bottom: 0cm">The Magick::Image methods <a href="Image++.html#annotate"><i>annotate</i></a>, <a href="Image++.html#draw"><i>draw</i></a>, <a href="Image++.html#label"><i>label</i></a>, and the template function <i>montageImages</i> support special format characters contained in the argument text. These format characters work similar to C's <i>printf</i>. Whenever a format character appears in the text, it is replaced with the equivalent attribute text. The available format characters are shown in the following table.</p>
+<br />
+<p align="center" style="margin-bottom: 0cm"><b>Format Characters</b></p>
+<center>
+<table width="50%" border="1" cellpadding="2" cellspacing="3">
+<col width="131*" />
+<col width="125*" />
+<tr>
+<td width="51%">
+<p align="center"><b>Format Character</b></p></td>
+<td width="49%">
+<p align="center"><b>Description</b></p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%b</p></td>
+<td width="49%">
+<p>file size</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%d</p></td>
+<td width="49%">
+<p>directory</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%e</p></td>
+<td width="49%">
+<p>filename extension</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%f</p></td>
+<td width="49%">
+<p>filename</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%h</p></td>
+<td width="49%">
+<p>height</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%m</p></td>
+<td width="49%">
+<p>magick (e.g GIF)</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%p</p></td>
+<td width="49%">
+<p>page number</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%s</p></td>
+<td width="49%">
+<p>scene number</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%t</p></td>
+<td width="49%">
+<p>top of filename</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%w</p></td>
+<td width="49%">
+<p>width</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%x</p></td>
+<td width="49%">
+<p>x resolution</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">%y</p></td>
+<td width="49%">
+<p>y resolution</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">\n</p></td>
+<td width="49%">
+<p>newline</p></td></tr>
+<tr>
+<td width="51%">
+<p align="center">\r</p></td>
+<td width="49%">
+<p>carriage return</p></td></tr></table></center>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Geometry</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Magick::Geometry</h1>
+<p>Geometry provides a convenient means to specify a geometry
+argument. The object may be initialized from a C string or C++ string
+containing a geometry specification. It may also be initialized by
+more efficient parameterized constructors.
+</p>
+<h3><a name="GeometrySpecifications"></a>Geometry
+Specifications</h3>
+<p>Geometry specifications are in the form
+<kbd>"<width>x<height>{+-}<xoffset>{+-}<yoffset>"</kbd>
+(where <i>width</i>, <i>height</i>, <i>xoffset</i>, and <i>yoffset</i>
+are numbers) for specifying the size and placement location for an
+object.
+</p>
+<p style="margin-bottom: 0in">The <i>width</i> and <i>height</i>
+parts of the geometry specification are measured in pixels. The
+<i>xoffset</i> and <i>yoffset</i> parts are also measured in pixels
+and are used to specify the distance of the placement coordinate from
+the left and top and edges of the image, respectively. Both types of
+offsets are measured from the indicated edge of the object to the
+corresponding edge of the image. The X offset may be specified in the
+following ways:
+</p>
+ <table width="90%" border="1" cellpadding="2" cellspacing="3">
+ <col width="21*" />
+ <col width="235*" />
+ <tr>
+ <td width="8%">
+ <p>+<i>xoffset</i></p>
+ </td>
+ <td width="92%">
+ <p>The left edge of the object is to be placed <i>xoffset</i>
+ pixels in from the <em>left edge </em>of the image.</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="8%">
+ <p>-<i>xoffset</i></p>
+ </td>
+ <td width="92%">
+ <p>The left edge of the object is to be placed outside the image,
+ <i>xoffset</i> pixels out from the <em>left edge </em>of the image.</p>
+ </td>
+ </tr>
+ </table>
+<p style="margin-bottom: 0in">The Y offset has similar meanings:
+</p>
+ <table width="90%" border="1" cellpadding="2" cellspacing="3">
+ <col width="27*" />
+ <col width="229*" />
+ <tr>
+ <td width="11%">
+ <p>+<i>yoffset</i></p>
+ </td>
+ <td width="89%">
+ <p>The top edge of the object is to be <i>yoffset</i> pixels
+ <em>below</em> the <em>top edge </em>of the image.</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="11%">
+ <p>-<i>yoffset</i></p>
+ </td>
+ <td width="89%">
+ <p>The top edge of the object is to be <i>yoffset</i> pixels
+ <em>above</em> the <em>top edge</em> of the image.</p>
+ </td>
+ </tr>
+ </table>
+<p>Offsets must be given as pairs; in other words, in order to
+specify either <i>xoffset</i> or <i>yoffset</i> both must be present.
+</p>
+<h3><a name="ExtendedGeometrySpecifications"></a>ImageMagick
+Extensions To Geometry Specifications</h3>
+<p style="margin-bottom: 0in">ImageMagick has added a number of
+qualifiers to the standard geometry string for use when resizing
+images. The form of an extended geometry string is
+"<kbd><width>x<height>{+-}<xoffset>{+-}<yoffset>{%}{!}{<}{>}"</kbd>.
+Extended geometry strings should <em>only</em> be used <em>when resizing
+an image</em>. Using an extended geometry string for other
+applications may cause the API call to fail. The available
+qualifiers are shown in the following table:
+</p>
+<p align="center" STYLE="margin-bottom: 0in"><b>ImageMagick Geometry
+Qualifiers</b></p>
+ <table width="90%" border="1" cellpadding="2" cellspacing="3">
+ <col width="36*" />
+ <col width="220*" />
+ <tr>
+ <td width="14%">
+ <p align="center"><b>Qualifier</b></p>
+ </td>
+ <td width="86%">
+ <p align="center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="14%">
+ <p align="center"><b>%</b></p>
+ </td>
+ <td width="86%">
+ <p>Interpret width and height as a <b>percentage</b> of the
+ current size.</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="14%">
+ <p align="center"><b>!</b></p>
+ </td>
+ <td width="86%">
+ <p>Resize to width and height <b>exactly</b>, loosing original
+ aspect ratio.</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="14%">
+ <p align="center"><b><</b></p>
+ </td>
+ <td width="86%">
+ <p>Resize only if the image is <b>smaller</b> than the geometry
+ specification.</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="14%">
+ <p align="center"><b>></b></p>
+ </td>
+ <td width="86%">
+ <p>Resize only if the image is <b>greater</b> than the geometry
+ specification.</p>
+ </td>
+ </tr>
+ </table>
+<h3><a name="PostscriptPageSize"></a>Postscript Page Size Extension
+To Geometry Specifications</h3>
+<p>Any geometry string specification supplied to the Geometry
+constructor is considered to be a Postscript page size nickname if
+the first character is not numeric. The Geometry constructor converts
+these page size specifications into the equivalent numeric geometry
+string specification (preserving any offset component) prior to
+conversion to the internal object format. Postscript page size
+specifications are short-hand for the pixel geometry required to fill
+a page of that size. Since the 11x17 inch page size used in the US
+starts with a digit, it is not supported as a Postscript page size
+nickname. Instead, substitute the geometry specification "<kbd>792x1224>"</kbd>
+when 11x17 output is desired.
+</p>
+<p style="margin-bottom: 0in">An example of a Postscript page size
+specification is <kbd>"letter+43+43>"</kbd>.
+</p>
+<p align="center" style="margin-bottom: 0in"><b>Postscript Page Size
+Nicknames</b></p>
+ <table width="70%" border="1" cellpadding="2" cellspacing="3">
+ <col width="105*" />
+ <col width="151*" />
+ <tr>
+ <td width="41%">
+ <p align="center"><b>Postscript Page Size Nickname</b></p>
+ </td>
+ <td width="59%">
+ <p align="center"><b>Equivalent Extended Geometry Specification</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">Ledger</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1224x792></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">Legal</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">612x1008></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">Letter</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">612x792></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">LetterSmall</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">612x792></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">ArchE</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">2592x3456></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">ArchD</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1728x2592></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">ArchC</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1296x1728></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">ArchB</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">864x1296></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">ArchA</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">648x864></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A0</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">2380x3368></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A1</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1684x2380></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A2</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1190x1684></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A3</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">842x1190></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A4</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">595x842></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A4Small</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">595x842></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A5</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">421x595></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A6</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">297x421></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A7</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">210x297></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A8</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">148x210></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A9</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">105x148></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">A10</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">74x105></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">B0</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">2836x4008></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">B1</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">2004x2836></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">B2</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1418x2004></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">B3</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1002x1418></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">B4</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">709x1002></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">B5</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">501x709></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">C0</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">2600x3677></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">C1</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1837x2600></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">C2</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">1298x1837></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">C3</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">918x1298></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">C4</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">649x918></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">C5</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">459x649></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">C6</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">323x459></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">Flsa</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">612x936></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">Flse</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">612x936></font></p>
+ </td>
+ </tr>
+ <tr>
+ <td width="41%">
+ <p align="center"><font size="2">HalfLetter</font></p>
+ </td>
+ <td width="59%">
+ <p align="center"><font size="2">396x612></font></p>
+ </td>
+ </tr>
+ </table>
+<H3 align="center">Geometry Methods</H3>
+<p style="margin-bottom: 0in">Geometry provides methods to initialize
+its value from strings, from a set of parameters, or via attributes.
+The methods available for use in Geometry are shown in the following
+table:
+</p>
+<p align="center" style="margin-bottom: 0in"><b>Geometry Methods</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+ <col width="25*" />
+ <col width="26*" />
+ <col width="111*" />
+ <col width="94*" />
+ <tr>
+ <td width="10%">
+ <p align="center"><b>Method</b></p>
+ </td>
+ <td width="10%">
+ <p align="center"><b>Return Type</b></p>
+ </td>
+ <td width="44%">
+ <p align="center"><b>Signature(s)</b></p>
+ </td>
+ <td width="37%">
+ <p align="center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="3" width="10%">
+ <p>Geometry</p>
+ </td>
+ <td rowspan="3" width="10%" bgcolor="#666666">
+ <p> </p>
+ </td>
+ <td width="44%">
+ <p>size_t width_, size_t height_, ssize_t xOff_ =
+ 0, ssize_t yOff_ = 0, bool xNegative_ = false, bool
+ yNegative_ = false</p>
+ </td>
+ <td width="37%">
+ <p>Construct geometry via explicit parameters.</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="44%">
+ <p>const string geometry_</p>
+ </td>
+ <td width="37%">
+ <p>Construct geometry from C++ string</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="44%">
+ <p>const char * geometry_</p>
+ </td>
+ <td width="37%">
+ <p>Construct geometry from C string</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>width</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>size_t width_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Width</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>size_t</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>height</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>size_t height_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Height</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>size_t</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>xOff</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>ssize_t xOff_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>X offset from origin</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>ssize_t</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>yOff</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>ssize_t yOff_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Y offset from origin</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>size_t</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>xNegative</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>bool xNegative_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Sign of X offset negative? (X origin at right)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>bool</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>yNegative</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>bool yNegative_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Sign of Y offset negative? (Y origin at bottom)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>bool</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>percent</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>bool percent_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Width and height are expressed as percentages</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>bool</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>aspect</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>bool aspect_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Resize without preserving aspect ratio (!)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>bool</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>greater</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>bool greater_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Resize if image is greater than size (>)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>bool</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>less</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>bool less_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Resize if image is less than size (<)</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>bool</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="2" width="10%">
+ <p>isValid</p>
+ </td>
+ <td width="10%">
+ <p>void</p>
+ </td>
+ <td width="44%">
+ <p>bool isValid_</p>
+ </td>
+ <td rowspan="2" width="37%">
+ <p>Does object contain a valid geometry? May be set to <i>false</i>
+ in order to invalidate an existing geometry object.</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>bool</p>
+ </td>
+ <td width="44%">
+ <p>void</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>operator =</p>
+ </td>
+ <td width="10%">
+ <p>const Geometry&</p>
+ </td>
+ <td width="44%">
+ <p>const string geometry_</p>
+ </td>
+ <td width="37%">
+ <p>Set geometry via C++ string</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>operator =</p>
+ </td>
+ <td width="10%">
+ <p>const Geometry&</p>
+ </td>
+ <td width="44%">
+ <p>const char * geometry_</p>
+ </td>
+ <td width="37%">
+ <p>Set geometry via C string</p>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ <p>operator string</p>
+ </td>
+ <td width="10%">
+ <p>string</p>
+ </td>
+ <td width="44%">
+ <p>Geometry&</p>
+ </td>
+ <td width="37%">
+ <p>Obtain C++ string representation of geometry</p>
+ </td>
+ </tr>
+</table>
+<p>In addition, we support these yet to be documented geometry flags: the fill area flag ('^') and the pixel area count limit flag ('@').</p>
+<p><br /><br />
+</p>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Working with Images</title>
+<link rel="stylesheet" href="http://www.imagemagick.org/Magick++/magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<center>
+<h1> Magick::Image Class</h1>
+</center>
+<h4> Quick Contents</h4>
+<ul>
+ <li> <a href="Image++.html#BLOBs">BLOBs</a> </li>
+ <li> <a href="Image++.html#Constructors">Constructors</a> </li>
+ <li> <a href="Image++.html#Image%20Manipulation%20Methods">Image Manipulation
+Methods</a> </li>
+ <li> <a href="Image++.html#Image%20Attributes">Image Attributes</a> </li>
+ <li> <a href="Image++.html#Raw%20Image%20Pixel%20Access">Low-Level Image Pixel
+Access</a> </li>
+</ul>
+<p>Image is the primary object in Magick++ and represents
+a single image frame (see <a href="http://www.imagemagick.org/Magick++/ImageDesign.html">design</a> ). The
+<a href="http://www.imagemagick.org/Magick++/STL.html">STL interface</a> <b>must</b> be used to operate on
+image sequences or images (e.g. of format GIF, TIFF, MIFF, Postscript,
+& MNG) which are comprized of multiple image frames. Individual
+frames of a multi-frame image may be requested by adding array-style
+notation to the end of the file name (e.g. "animation.gif[3]" retrieves
+the fourth frame of a GIF animation.  Various image manipulation
+operations may be applied to the image. Attributes may be set on the
+image to influence the operation of the manipulation operations. The <a
+ href="http://www.imagemagick.org/Magick++/Pixels.html"> Pixels</a> class provides low-level access to
+image
+pixels. As a convenience, including <tt><font color="#663366"><Magick++.h></font></tt>
+is sufficient in order to use the complete Magick++ API. The Magick++
+API is enclosed within the <i>Magick</i> namespace so you must either
+add the prefix "<tt> Magick::</tt> " to each class/enumeration name or
+add
+the statement "<tt> using namespace Magick;</tt>" after including the <tt>Magick++.h</tt>
+header.</p>
+<p>The preferred way to allocate Image objects is via automatic
+allocation (on the stack). There is no concern that allocating Image
+objects on the stack will excessively enlarge the stack since Magick++
+allocates all large data objects (such as the actual image data) from
+the heap. Use of automatic allocation is preferred over explicit
+allocation (via <i>new</i>) since it is much less error prone and
+allows use of C++ scoping rules to avoid memory leaks. Use of automatic
+allocation allows Magick++ objects to be assigned and copied just like
+the C++ intrinsic data types (e.g. '<i>int</i> '), leading to clear and
+easy to read code. Use of automatic allocation leads to naturally
+exception-safe code since if an exception is thrown, the object is
+automagically deallocated once the stack unwinds past the scope of the
+allocation (not the case for objects allocated via <i>new</i> ). </p>
+<p>Image is very easy to use. For example, here is a the source to a
+program which reads an image, crops it, and writes it to a new file
+(the
+exception handling is optional but strongly recommended): </p>
+<pre class="code">
+#include <Magick++.h>
+#include <iostream>
+using namespace std;
+using namespace Magick;
+int main(int argc,char **argv)
+{
+ InitializeMagick(*argv);
+
+ // Construct the image object. Seperating image construction from the
+ // the read operation ensures that a failure to read the image file
+ // doesn't render the image object useless.
+ Image image;
+ try {
+ // Read a file into image object
+ image.read( "girl.gif" );
+
+ // Crop the image to specified size (width, height, xOffset, yOffset)
+ image.crop( Geometry(100,100, 100, 100) );
+
+ // Write the image to a file
+ image.write( "x.gif" );
+ }
+ catch( Exception &error_ )
+ {
+ cout << "Caught exception: " << error_.what() << endl;
+ return 1;
+ }
+ return 0;
+}
+</pre>
+The following is the source to a program which illustrates the use of
+Magick++'s efficient reference-counted assignment and copy-constructor
+operations which minimize use of memory and eliminate unncessary copy
+operations (allowing Image objects to be efficiently assigned, and
+copied into containers).  The program accomplishes the
+following:
+<ol>
+ <li> Read master image.</li>
+ <li> Assign master image to second image.</li>
+ <li> Resize second image to the size 640x480.</li>
+ <li> Assign master image to a third image.</li>
+ <li> Resize third image to the size 800x600.</li>
+ <li> Write the second image to a file.</li>
+ <li> Write the third image to a file.</li>
+</ol>
+<pre class="code">
+#include <Magick++.h>
+#include <iostream>
+using namespace std;
+using namespace Magick;
+int main(int argc,char **argv)
+{
+ InitializeMagick(*argv);
+
+ Image master("horse.jpg");
+ Image second = master;
+ second.resize("640x480");
+ Image third = master;
+ third.resize("800x600");
+ second.write("horse640x480.jpg");
+ third.write("horse800x600.jpg");
+ return 0;
+}
+</pre>
+During the entire operation, a maximum of three images exist in memory
+and the image data is never copied.
+<p>The following is the source for another simple program which creates
+a 100 by 100 pixel white image with a red pixel in the center and
+writes it to a file: </p>
+<pre class="code">
+#include <Magick++.h>
+using namespace std;
+using namespace Magick;
+int main(int argc,char **argv)
+{
+ InitializeMagick(*argv);
+ Image image( "100x100", "white" );
+ image.pixelColor( 49, 49, "red" );
+ image.write( "red_pixel.png" );
+ return 0;
+}
+</pre>
+If you wanted to change the color image to grayscale, you could add the
+lines:
+<pre class="code">
+image.quantizeColorSpace( GRAYColorspace );
+image.quantizeColors( 256 );
+image.quantize( );
+</pre>
+<p>or, more simply: </p>
+<pre class="code">
+ image.type( GrayscaleType );
+</pre>
+<p>prior to writing the image. </p>
+<center>
+<h3> <a name="BLOBs"></a> BLOBs</h3>
+</center>
+While encoded images (e.g. JPEG) are most often written-to and
+read-from a disk file, encoded images may also reside in memory.
+Encoded
+images in memory are known as BLOBs (Binary Large OBjects) and may be
+represented using the <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> class. The encoded
+image may be initially placed in memory by reading it directly from a
+file, reading the image from a database, memory-mapped from a disk
+file, or could be written to memory by Magick++. Once the encoded image
+has been placed within a Blob, it may be read into a Magick++ Image via
+a <a href="Image++.html#constructor_blob">constructor</a> or <a href="Image++.html#read">read()</a>
+. Likewise, a Magick++ image may be written to a Blob via <a
+ href="Image++.html#write"> write()</a> .
+<p>An example of using Image to write to a Blob follows: <br />
+  </p>
+<pre class="code">
+#include >Magick++.h>
+using namespace std;
+using namespace Magick;
+int main(int argc,char **argv)
+{
+ InitializeMagick(*argv);
+
+ // Read GIF file from disk
+ Image image( "giraffe.gif" );
+ // Write to BLOB in JPEG format
+ Blob blob;
+ image.magick( "JPEG" ) // Set JPEG output format
+ image.write( &blob );
+
+ [ Use BLOB data (in JPEG format) here ]
+
+ return 0;
+}
+</pre>
+<p><br />
+likewise, to read an image from a Blob, you could use one of the
+following examples: </p>
+<p>[ <font color="#000000">Entry condition for the following examples
+is that <i>data</i> is pointer to encoded image data and <i>length</i>
+represents the size of the data</font> ] </p>
+<pre class="code">
+Blob blob( data, length );
+Image image( blob );
+</pre>
+or
+<pre class="code">
+Blob blob( data, length );
+Image image;
+image.read( blob);
+</pre>
+some images do not contain their size or format so the size and format must be specified in advance:
+<pre class="code">
+Blob blob( data, length );
+Image image;
+image.size( "640x480")
+image.magick( "RGBA" );
+image.read( blob);
+</pre>
+<center>
+<h3> <a name="Constructors"></a> Constructors</h3>
+</center>
+Image may be constructed in a number of ways. It may be constructed
+from a file, a URL, or an encoded image (e.g. JPEG) contained in an
+in-memory <a href="http://www.imagemagick.org/Magick++/Blob.html"> BLOB</a> . The available Image
+constructors are shown in the following table: <br />
+  <br />
+ 
+<table bgcolor="#ffffff" border="1" width="100%">
+ <caption><b>Image Constructors</b></caption> <tbody>
+ <tr>
+ <td>
+ <center><b>Signature</b></center>
+ </td>
+ <td>
+ <center><b>Description</b></center>
+ </td>
+ </tr>
+ <tr>
+ <td><font size="-1">const std::string &imageSpec_</font></td>
+ <td><font size="-1">Construct Image by reading from file or URL
+specified by <i>imageSpec_</i>. Use array notation (e.g. filename[9])
+to select a specific scene from a multi-frame image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const Geometry &size_, const <a
+ href="http://www.imagemagick.org/Magick++/Color.html"> Color</a> &color_</font></td>
+ <td><font size="-1">Construct a blank image canvas of specified
+size and color</font></td>
+ </tr>
+ <tr>
+ <td><a name="constructor_blob"></a> <font size="-1">const <a
+ href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> &blob_</font></td>
+ <td rowspan="5"><font size="-1">Construct Image by reading from
+encoded image data contained in an in-memory <a href="http://www.imagemagick.org/Magick++/Blob.html">BLOB</a>
+. Depending on the constructor arguments, the Blob <a href="Image++.html#size">size</a>
+, <a href="Image++.html#depth">depth</a> , <a href="Image++.html#magick">magick</a> (format)
+may
+also be specified. Some image formats require that size be specified.
+The default ImageMagick uses for depth depends on the compiled-in
+Quantum size (8 or 16).  If ImageMagick's Quantum size does not
+match that of the image, the depth may need to be specified.
+ImageMagick can usually automagically detect the image's format.
+When a format can't be automagically detected, the format (<a
+ href="Image++.html#magick">magick</a> ) must be specified.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&blob_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> &size_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&blob_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> &size,
+size_t depth</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&blob_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> &size,
+size_t depth_, const string &magick_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&blob_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> &size,
+const
+string &magick_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const size_t width_, </font> <br />
+ <font size="-1">const size_t height_,</font> <br />
+ <font size="-1">std::string map_,</font> <br />
+ <font size="-1">const <a href="http://www.imagemagick.org/Magick++/Enumerations.html#StorageType">
+StorageType</a> type_,</font> <br />
+ <font size="-1">const void *pixels_</font></td>
+ <td><font size="-1">Construct a new Image based on an array of
+image pixels. The pixel data must be in scanline order top-to-bottom.
+The data can be character, short int, integer, float, or double. Float
+and double require the pixels to be normalized [0..1]. The other types
+are [0..MaxRGB].  For example, to create a 640x480 image from
+unsigned red-green-blue character data, use</font>
+ <p><font size="-1">   Image image( 640, 480, "RGB",
+0, pixels );</font> </p>
+ <p><font size="-1">The parameters are as follows:</font> <br />
+ </p>
+ <table border="0" width="100%">
+ <tbody>
+ <tr>
+ <td><font size="-1">width_</font></td>
+ <td><font size="-1">Width in pixels of the image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">height_</font></td>
+ <td><font size="-1">Height in pixels of the image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">map_</font></td>
+ <td><font size="-1">This character string can be any
+combination or order of R = red, G = green, B = blue, A = alpha, C =
+cyan, Y = yellow M = magenta, and K = black. The ordering reflects the
+order of the pixels in the supplied pixel array.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">type_</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#StorageType">Pixel
+storage type</a> (CharPixel, ShortPixel, IntegerPixel, FloatPixel, or
+DoublePixel)</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">pixels_</font></td>
+ <td><font size="-1">This array of values contain the pixel
+components as defined by the map_ and type_ parameters. The length of
+the arrays must equal the area specified by the width_ and height_
+values and type_ parameters.</font></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<center>
+<h3> <a name="Image Manipulation Methods"></a> Image Manipulation
+Methods</h3>
+</center>
+<i>Image</i> supports access to all the single-image (versus
+image-list) manipulation operations provided by the ImageMagick
+library. If you
+must process a multi-image file (such as an animation), the <a
+ href="http://www.imagemagick.org/Magick++/STL.html"> STL interface</a> , which provides a multi-image
+abstraction on top of <i>Image</i>, must be used.
+<p>Image manipulation methods are very easy to use.  For example: </p>
+<pre class="code">
+Image image;
+image.read("myImage.tiff");
+image.addNoise(GaussianNoise);
+image.write("myImage.tiff");
+</pre>
+adds gaussian noise to the image file "myImage.tiff".
+<p>The operations supported by Image are shown in the following table: <br />
+ </p>
+<table border="1">
+ <caption><b>Image Image Manipulation Methods</b></caption> <tbody>
+ <tr align="center">
+ <td><b>Method</b></td>
+ <td><b>Signature(s)</b></td>
+ <td><b>Description</b></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" valign="middle">
+ <div style="text-align:center"><a name="adaptiveThreshold"></a> <font
+ size="-1">adaptiveThreshold<br />
+ </font></div>
+ </td>
+ <td valign="middle"><font size="-1">size_t width, size_t
+height, size_t offset = 0<br />
+ </font></td>
+ <td valign="top"><font size="-1">Apply adaptive thresholding to
+the image. Adaptive thresholding is useful if the ideal threshold level
+is not known in advance, or if the illumination gradient is not
+constant
+across the image. Adaptive thresholding works by evaulating the mean
+(average) of a pixel region (size specified by <i>width</i> and <i>height</i>)
+and using the mean as the thresholding value. In order to remove
+residual noise from the background, the threshold may be adjusted by
+subtracting a constant <i>offset</i> (default zero) from the mean to
+compute the threshold.</font><br />
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="addNoise"></a> <font size="-1">addNoise</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#NoiseType">NoiseType</a>
+noiseType_</font></td>
+ <td><font size="-1">Add noise to image with specified noise type.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="addNoiseChannel"></a>addNoiseChannel<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const ChannelType
+channel_, const NoiseType noiseType_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Add noise to an image
+channel with the specified noise type.</small><font size="-1"> The <span
+ style="font-style: italic;">channel_</span> parameter specifies the
+channel to add noise to.  The </font><small>noiseType_ parameter
+specifies the type of noise.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="affineTransform"></a>affineTransform<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const DrawableAffine
+&affine<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Transform image by
+specified affine (or free transform) matrix.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="4">
+ <center><a name="annotate"></a> <font size="-1">annotate</font></center>
+ </td>
+ <td><font size="-1">const std::string &text_, const <a
+ href="http://www.imagemagick.org/Magick++/Geometry.html"> Geometry</a> &location_</font></td>
+ <td><font size="-1">Annotate using specified text, and placement
+location</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">string text_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&boundingArea_, <a href="http://www.imagemagick.org/Magick++/Enumerations.html#GravityType">GravityType</a>
+gravity_</font></td>
+ <td><font size="-1">Annotate using specified text, bounding area,
+and placement gravity. If <i>boundingArea_</i> is invalid, then
+bounding area is entire image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const std::string &text_, const <a
+ href="http://www.imagemagick.org/Magick++/Geometry.html"> Geometry</a> &boundingArea_, <a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#GravityType">GravityType</a> gravity_, double
+degrees_, </font></td>
+ <td><font size="-1">Annotate with text using specified text,
+bounding area, placement gravity, and rotation. If <i>boundingArea_</i>
+is invalid, then bounding area is entire image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const std::string &text_, <a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#GravityType"> GravityType</a> gravity_</font></td>
+ <td><font size="-1">Annotate with text (bounding area is entire
+image) and placement gravity.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="blur"></a> <font size="-1">blur</font></center>
+ </td>
+ <td><font size="-1">const double radius_ = 1, const double sigma_
+= 0.5</font></td>
+ <td><font size="-1">Blur image. The <i>radius_ </i>parameter
+specifies the radius of the Gaussian, in pixels, not counting the
+center
+pixel.  The <i>sigma_</i> parameter specifies the standard
+deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="blurChannel"></a>blurChannel<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const ChannelType
+channel_, const double radius_ = 0.0, const double sigma_ = 1.0<br />
+ </small></td>
+ <td style="vertical-align: middle;"><font size="-1">Blur an image
+channel. The <span style="font-style: italic;">channel_</span>
+parameter specifies the channel to blur. The <i>radius_ </i>parameter
+specifies the radius of the Gaussian, in pixels, not counting the
+center
+pixel.  The <i>sigma_</i> parameter specifies the standard
+deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="border"></a> <font size="-1">border</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_ = "6x6+0+0"</font></td>
+ <td><font size="-1">Border image (add border to image).  The
+color of the border is specified by the <i>borderColor</i> attribute.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="cdl"></a> <font size="-1">cdl</font></center>
+ </td>
+ <td><font size="-1">const std::string &cdl_</font></td>
+ <td><font size="-1">color correct with a color decision list. See <a href="http://en.wikipedia.org/wiki/ASC_CDL">http://en.wikipedia.org/wiki/ASC_CDL</a> for details.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="channel"></a> <font size="-1">channel</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ChannelType">ChannelType</a>
+layer_</font></td>
+ <td><font size="-1">Extract channel from image. Use this option
+to extract a particular channel from  the image.  <i>MatteChannel</i>
+  for  example, is useful for extracting the opacity values
+from an image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="charcoal"></a> <font size="-1">charcoal</font></center>
+ </td>
+ <td><font size="-1">const double radius_ = 1, const double sigma_
+= 0.5</font></td>
+ <td><font size="-1">Charcoal effect image (looks like charcoal
+sketch). The <i>radius_</i> parameter specifies the radius of the
+Gaussian, in pixels, not counting the center pixel.  The <i>sigma_</i>
+parameter specifies the standard deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="chop"></a> <font size="-1">chop</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Chop image (remove vertical or horizontal
+subregion of image)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="colorize"></a> <font size="-1">colorize</font></center>
+ </td>
+ <td><font size="-1">const unsigned int opacityRed_, const
+unsigned int opacityGreen_, const unsigned int opacityBlue_, const
+Color &penColor_</font></td>
+ <td><font size="-1">Colorize image with pen color, using
+specified percent opacity for red, green, and blue quantums.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="colorMatrix"></a> <font size="-1">colorMatrix</font></center>
+ </td>
+ <td><font size="-1">const size_t order_, const double *color_matrix_</font></td>
+ <td><font size="-1">apply color correction to the image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="comment"></a> <font size="-1">comment</font></center>
+ </td>
+ <td><font size="-1">const std::string &comment_</font></td>
+ <td><font size="-1">Comment image (add comment string to
+image).  By default, each image is commented with its file name.
+Use  this  method to  assign a specific comment to the
+image.  Optionally you can include the image filename, type,
+width, height, or other  image  attributes by embedding <a
+ href="http://www.imagemagick.org/Magick++/FormatCharacters.html">special format characters.</a> </font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" valign="middle"><font size="-1"><a
+ name="compare"></a> compare<br />
+ </font></td>
+ <td valign="middle"><font size="-1">const Image &reference_<br />
+ </font></td>
+ <td valign="top"><font size="-1">Compare current image with
+another image. Sets <a href="Image++.html#meanErrorPerPixel">meanErrorPerPixel</a>
+, <a href="Image++.html#normalizedMaxError">normalizedMaxError</a> , and <a
+ href="Image++.html#normalizedMeanError">normalizedMeanError</a> in the current
+image. False is returned if the images are identical. An ErrorOption
+exception is thrown if the reference image columns, rows, colorspace,
+or
+matte differ from the current image.</font><br />
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="3">
+ <center><a name="composite"></a> <font size="-1">composite</font></center>
+ </td>
+ <td><font size="-1">const <a href="Image++.html">Image</a>
+&compositeImage_, ssize_t xOffset_, ssize_t yOffset_, <a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#CompositeOperator"> CompositeOperator</a>
+compose_ = <i>InCompositeOp</i></font></td>
+ <td><font size="-1">Compose an image onto the current image at
+offset specified by <i>xOffset_</i>, <i>yOffset_ </i>using the
+composition algorithm specified by <i>compose_</i>. </font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="Image++.html">Image</a>
+&compositeImage_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&offset_, <a href="http://www.imagemagick.org/Magick++/Enumerations.html#CompositeOperator">CompositeOperator</a>
+compose_ = <i>InCompositeOp</i></font></td>
+ <td><font size="-1">Compose an image onto the current image at
+offset specified by <i>offset_</i> using the composition algorithm
+specified by <i>compose_</i> . </font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="Image++.html">Image</a>
+&compositeImage_, <a href="http://www.imagemagick.org/Magick++/Enumerations.html#GravityType">GravityType</a>
+gravity_, <a href="http://www.imagemagick.org/Magick++/Enumerations.html#CompositeOperator">CompositeOperator</a>
+compose_ = <i>InCompositeOp</i></font></td>
+ <td><font size="-1">Compose an image onto the current image with
+placement specified by <i>gravity_ </i>using the composition
+algorithm
+specified by <i>compose_</i>. </font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="contrast"></a> <font size="-1">contrast</font></center>
+ </td>
+ <td><font size="-1">size_t sharpen_</font></td>
+ <td><font size="-1">Contrast image (enhance intensity differences
+in image)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="convolve"></a> <font size="-1">convolve</font></center>
+ </td>
+ <td><font size="-1">size_t order_, const double *kernel_</font></td>
+ <td><font size="-1">Convolve image.  Applies a user-specfied
+convolution to the image. The <i>order_</i> parameter represents the
+number of columns and rows in the filter kernel, and <i>kernel_</i>
+is a two-dimensional array of doubles representing the convolution
+kernel to apply.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="crop"></a> <font size="-1">crop</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Crop image (subregion of original image)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="cycleColormap"></a> <font size="-1">cycleColormap</font></center>
+ </td>
+ <td><font size="-1">int amount_</font></td>
+ <td><font size="-1">Cycle image colormap</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="despeckle"></a> <font size="-1">despeckle</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Despeckle image (reduce speckle noise)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="display"></a> <font size="-1">display</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Display image on screen.</font> <br />
+ <font size="-1"><b><font color="#ff0000">Caution: </font></b> if
+an image format is is not compatible with the display visual (e.g.
+JPEG on a colormapped display) then the original image will be
+altered. Use a copy of the original if this is a problem.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="distort"></a> <font size="-1">distort</font></center>
+ </td>
+ <td><font size="-1">const DistortImageMethod method, const size_t number_arguments, const double *arguments, const bool bestfit = false </font></td>
+ <td><font size="-1">Distort image.  Applies a user-specfied
+distortion to the image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="2">
+ <center><a name="draw"></a> <font size="-1">draw</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Drawable.html">Drawable</a>
+&drawable_</font></td>
+ <td><font size="-1">Draw shape or text on image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const std::list<<a href="http://www.imagemagick.org/Magick++/Drawable.html">Drawable</a>
+> &drawable_</font></td>
+ <td><font size="-1">Draw shapes or text on image using a set of
+Drawable objects contained in an STL list. Use of this method improves
+drawing performance and allows batching draw objects together in a
+list for repeated use.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="edge"></a> <font size="-1">edge</font></center>
+ </td>
+ <td><font size="-1">size_t radius_ = 0.0</font></td>
+ <td><font size="-1">Edge image (hilight edges in image). 
+The radius is the radius of the pixel neighborhood.. Specify a radius
+of zero for automatic radius selection.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="emboss"></a> <font size="-1">emboss</font></center>
+ </td>
+ <td><font size="-1">const double radius_ = 1, const double sigma_
+= 0.5</font></td>
+ <td><font size="-1">Emboss image (hilight edges with 3D effect).
+The <i> radius_</i> parameter specifies the radius of the Gaussian, in
+pixels, not counting the center pixel.  The <i>sigma_</i>
+parameter specifies the standard deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="enhance"></a> <font size="-1">enhance</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Enhance image (minimize noise)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="equalize"></a> <font size="-1">equalize</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Equalize image (histogram equalization)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="erase"></a> <font size="-1">erase</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Set all image pixels to the current
+background color.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="4">
+ <center><a name="extent"></a> <font size="-1">extent</font></center></td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html"> Geometry</a> &geometry_</font></td>
+ <td rowspan="2"><font size="-1">extends the image as defined by the geometry, gravity, and image background color.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_, const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> &backgroundColor_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html"> Geometry</a> &geometry_, const <a href="http://www.imagemagick.org/Magick++/Enumerations.html#GravityType">GravityType</a>
+&gravity_</font></td>
+ <td rowspan="2"><font size="-1">extends the image as defined by the geometry, gravity, and image background color.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_, const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> &backgroundColor_,
+const <a href="http://www.imagemagick.org/Magick++/Enumerations.html#GravityType">GravityType</a> &gravity_</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="flip"></a> <font size="-1">flip</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Flip image (reflect each scanline in the
+vertical direction)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="4">
+ <center><a name="floodFillColor"></a> <font size="-1">floodFill-</font>
+ <br />
+ <font size="-1">Color</font></center>
+ </td>
+ <td><font size="-1">ssize_t x_, ssize_t y_, const <a
+ href="http://www.imagemagick.org/Magick++/Color.html"> Color</a> &fillColor_</font></td>
+ <td rowspan="2"><font size="-1">Flood-fill color across pixels
+that match the color of the target pixel and are neighbors of the
+target pixel. Uses current fuzz setting when determining color match.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&point_, const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> &fillColor_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">ssize_t x_, ssize_t y_, const <a
+ href="http://www.imagemagick.org/Magick++/Color.html"> Color</a> &fillColor_, const <a
+ href="http://www.imagemagick.org/Magick++/Color.html">Color</a>
+&borderColor_</font></td>
+ <td rowspan="2"><font size="-1">Flood-fill color across pixels
+starting at target-pixel and stopping at pixels matching specified
+border color. Uses current fuzz setting when determining color match.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&point_, const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> &fillColor_,
+const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> &borderColor_</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;"><a name="floodFillOpacity"></a> <font
+ size="-1">floodFillOpacity</font></td>
+ <td><font size="-1">const long x_, const long y_, const unsigned int
+opacity_, const PaintMethod method_</font></td>
+ <td><font size="-1">Floodfill pixels matching color (within fuzz
+factor) of target pixel(x,y) with replacement opacity value using
+method.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="4">
+ <center><a name="floodFillTexture"></a> <font size="-1">floodFill-</font>
+ <br />
+ <font size="-1">Texture</font></center>
+ </td>
+ <td><font size="-1">ssize_t x_, ssize_t y_,  const
+Image &texture_</font></td>
+ <td rowspan="2"><font size="-1">Flood-fill texture across pixels
+that match the color of the target pixel and are neighbors of the
+target pixel. Uses current fuzz setting when determining color match.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&point_, const Image &texture_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">ssize_t x_, ssize_t y_, const Image
+&texture_, const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> &borderColor_</font></td>
+ <td rowspan="2"><font size="-1">Flood-fill texture across pixels
+starting at target-pixel and stopping at pixels matching specified
+border color. Uses current fuzz setting when determining color match.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&point_, const Image &texture_, const <a href="http://www.imagemagick.org/Magick++/Color.html">
+Color</a>
+&borderColor_</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="flop"></a> <font size="-1">flop</font></center>
+ </td>
+ <td><font size="-1">void </font></td>
+ <td><font size="-1">Flop image (reflect each scanline in the
+horizontal direction)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="2">
+ <center><a name="frame"></a> <font size="-1">frame</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_ = "25x25+6+6"</font></td>
+ <td rowspan="2"><font size="-1">Add decorative frame around image</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">size_t width_, size_t height_,
+ssize_t x_, ssize_t y_, ssize_t innerBevel_ = 0, ssize_t outerBevel_ = 0</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fx"></a> <font size="-1">fx</font></center>
+ </td>
+ <td><font size="-1">const std::string expression, const Magick::ChannelType channel</font></td>
+ <td><font size="-1">Fx image.  Applies a mathematical
+expression to the image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="2">
+ <center><a name="gamma"></a> <font size="-1">gamma</font></center>
+ </td>
+ <td><font size="-1">double gamma_</font></td>
+ <td><font size="-1">Gamma correct image (uniform red, green, and
+blue correction).</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">double gammaRed_, double gammaGreen_, double
+gammaBlue_</font></td>
+ <td><font size="-1">Gamma correct red, green, and blue channels
+of image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="gaussianBlur"></a> <font size="-1">gaussianBlur</font></center>
+ </td>
+ <td><font size="-1">const double width_, const double sigma_</font></td>
+ <td><font size="-1">Gaussian blur image. The number of neighbor
+pixels to be included in the convolution mask is specified by
+'width_'.  For example, a width of one gives a (standard) 3x3
+convolution mask. The standard deviation of the gaussian bell curve is
+specified by 'sigma_'.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="gaussianBlurChannel"></a>gaussianBlurChannel<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const ChannelType
+channel_, const double radius_ = 0.0, const double sigma_ = 1.0<br />
+ </small></td>
+ <td style="vertical-align: middle;"><font size="-1">Gaussian blur
+an image channel. </font><font size="-1">The <span
+ style="font-style: italic;">channel_</span> parameter specifies the
+channel to blur. </font><font size="-1">The number of neighbor
+pixels to be included in the convolution mask is specified by
+'width_'.  For example, a width of one gives a (standard) 3x3
+convolution mask. The standard deviation of the gaussian bell curve is
+specified by 'sigma_'.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" valign="middle"><font size="-1"><a
+ name="haldClut"></a> haldClut<br />
+ </font></td>
+ <td valign="middle"><font size="-1">const Image &reference_<br />
+ </font></td>
+ <td valign="top"><font size="-1">apply a Hald color lookup table to the image.</font><br />
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="implode"></a> <font size="-1">implode</font></center>
+ </td>
+ <td><font size="-1">const double factor_</font></td>
+ <td><font size="-1">Implode image (special effect)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="inverseFourierTransform"></a> <font size="-1">inverseFourierTransform</font></center>
+ </td>
+ <td><font size="-1">const Image &phaseImage_, const bool magnitude_</font></td>
+ <td><font size="-1">implements the inverse discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="label"></a> <font size="-1">label</font></center>
+ </td>
+ <td><font size="-1">const string &label_</font></td>
+ <td><font size="-1">Assign a label to an image. Use this option
+to  assign  a  specific label to the image. Optionally
+you can include the image filename, type, width, height, or scene
+number in the label by embedding  <a href="http://www.imagemagick.org/Magick++/FormatCharacters.html">
+special format characters.</a> If the first character of string is @,
+the
+image label is read from a file titled by the remaining characters in
+the string. When converting to Postscript, use this  option to
+specify a header string to print above the image.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top; text-align: center;"><small><a
+ name="level"></a>level<br />
+ </small></td>
+ <td style="vertical-align: top;"><small>const double black_point,
+const double white_point, const double mid_point=1.0<br />
+ </small></td>
+ <td style="vertical-align: top;"><small>Level image. Adjust the
+levels of the image by scaling the colors falling between specified
+white and black points to the full available quantum range. The
+parameters provided represent the black, mid (gamma), and white
+points.  The black point specifies the darkest color in the image.
+Colors darker than the black point are set to zero. Mid point (gamma)
+specifies a gamma correction to apply to the image. White point
+specifies the lightest color in the image.  Colors brighter than
+the white point are set to the maximum quantum value. The black and
+white point have the valid range 0 to MaxRGB while mid (gamma) has a
+useful range of 0 to ten.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="levelChannel"></a>levelChannel<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const ChannelType
+channel, const double black_point, const double white_point, const
+double mid_point=1.0<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Level image channel.
+Adjust the levels of the image channel by scaling the values falling
+between specified white and black points to the full available quantum
+range. The parameters provided represent the black, mid (gamma), and
+white points. The black point specifies the darkest color in the image.
+Colors darker than the black point are set to zero. Mid point (gamma)
+specifies a gamma correction to apply to the image. White point
+specifies the lightest color in the image. Colors brighter than the
+white point are set to the maximum quantum value. The black and white
+point have the valid range 0 to MaxRGB while mid (gamma) has a useful
+range of 0 to ten.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="magnify"></a> <font size="-1">magnify</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Magnify image by integral size</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="map"></a> <font size="-1">map</font></center>
+ </td>
+ <td><font size="-1">const Image &mapImage_ , bool dither_ =
+false</font></td>
+ <td><font size="-1">Remap image colors with closest color from
+reference image. Set dither_ to <i>true</i> in to apply
+Floyd/Steinberg
+error diffusion to the image. By default, color reduction chooses an
+optimal  set  of colors that best represent the original
+image. Alternatively, you can  choose  a 
+particular  set  of colors  from  an image file
+with this option.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="matteFloodfill"></a> <font size="-1">matteFloodfill</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a>
+&target_, const unsigned int  opacity_, const ssize_t x_, const
+ssize_t
+y_, <a href="http://www.imagemagick.org/Magick++/Enumerations.html#PaintMethod">PaintMethod</a> method_</font></td>
+ <td><font size="-1">Floodfill designated area with a replacement
+opacity value.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;"><a name="medianFilter"></a> <font
+ size="-1">medianFilter</font></td>
+ <td><font size="-1">const double radius_ = 0.0</font></td>
+ <td><font size="-1">Filter image by replacing each pixel
+component with the median color in a circular neighborhood</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="mergeLayers"></a> <font size="-1">mergeLayers</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#LayerMethod">LayerMethod</a>
+noiseType_</font></td>
+ <td><font size="-1">handle multiple images forming a set of image layers or animation frames.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="minify"></a> <font size="-1">minify</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Reduce image by integral size</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;"><a name="modifyImage"></a> <font
+ size="-1">modifyImage</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Prepare to update image. Ensures that there
+is only one reference to the underlying image so that the underlying
+image may be safely modified without effecting previous generations of
+the image. Copies the underlying image to a new image if necessary.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="modulate"></a> <font size="-1">modulate</font></center>
+ </td>
+ <td><font size="-1">double brightness_, double saturation_,
+double hue_</font></td>
+ <td><font size="-1">Modulate percent hue, saturation, and
+brightness of an image. Modulation of saturation and brightness is as a
+ratio of the current value (100.0 for no change). Modulation of hue is an
+absolute rotation of -180 degrees to +180 degrees from the current
+position corresponding to an argument range of 0 to 200.0 (100.0 for no
+change).</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="motionBlur"></a>motionBlur<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const double radius_,
+const double sigma_, const double angle_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Motion blur image with
+specified blur factor. The radius_ parameter specifies the radius of
+the Gaussian, in pixels, not counting the center pixel.  The
+sigma_ parameter specifies the standard deviation of the Laplacian, in
+pixels. The angle_ parameter specifies the angle the object appears to
+be comming from (zero degrees is from the right).<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="negate"></a> <font size="-1">negate</font></center>
+ </td>
+ <td><font size="-1">bool grayscale_ = false</font></td>
+ <td><font size="-1">Negate colors in image.  Replace every
+pixel with its complementary color (white becomes black, yellow becomes
+blue, etc.).  Set grayscale to only negate grayscale values in
+image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="normalize"></a> <font size="-1">normalize</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Normalize image (increase contrast by
+normalizing the pixel values to span the full range of color values).</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="oilPaint"></a> <font size="-1">oilPaint</font></center>
+ </td>
+ <td><font size="-1">size_t radius_ = 3</font></td>
+ <td><font size="-1">Oilpaint image (image looks like oil painting)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="opacity"></a> <font size="-1">opacity</font></center>
+ </td>
+ <td><font size="-1">unsigned int opacity_</font></td>
+ <td><font size="-1">Set or attenuate the opacity channel in the
+image. If the image pixels are opaque then they are set to the
+specified
+opacity value, otherwise they are blended with the supplied opacity
+value.  The value of opacity_ ranges from 0 (completely opaque) to
+ <i>MaxRGB</i>
+. The defines <i>OpaqueOpacity</i> and <i>TransparentOpacity</i> are
+available to specify completely opaque or completely transparent,
+respectively.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="opaque"></a> <font size="-1">opaque</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a>
+&opaqueColor_, const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> &penColor_</font></td>
+ <td><font size="-1">Change color of pixels matching opaqueColor_
+to specified penColor_.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="2">
+ <center><a name="ping"></a> <font size="-1">ping</font></center>
+ </td>
+ <td><font size="-1">const std::string &imageSpec_</font></td>
+ <td rowspan="2"><font size="-1">Ping is similar to read
+except only enough of the image is read to determine the image columns,
+rows, and filesize.  The <a href="Image++.html#columns">columns</a> </font>,
+ <font size="-1"><a href="Image++.html#rows">rows</a> , and <a
+ href="Image++.html#fileSize">fileSize</a>
+attributes are valid after invoking ping.  The image data is not
+valid after calling ping.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const Blob &blob_</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="process"></a>process<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>std::string name_,
+const ssize_t argc_, char **argv_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Execute the named
+process module, passing any arguments via an argument vector, with
+argc_
+specifying the number of arguments in the vector, and argv_ passing the
+address of an array of null-terminated C strings which constitute the
+argument vector. An exception is thrown if the requested process module
+does not exist, fails to load, or fails during execution.</small><br />
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="quantize"></a> <font size="-1">quantize</font></center>
+ </td>
+ <td><font size="-1">bool measureError_ = false</font></td>
+ <td><font size="-1">Quantize image (reduce number of colors). Set
+measureError_ to true in order to calculate error attributes.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="raise"></a> <font size="-1">raise</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_ = "6x6+0+0",  bool raisedFlag_ =  false</font></td>
+ <td><font size="-1">Raise image (lighten or darken the edges of
+an image to give a 3-D raised or lowered effect)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="8">
+ <center><a name="read"></a> <font size="-1">read</font></center>
+ </td>
+ <td><font size="-1">const string &imageSpec_</font></td>
+ <td><font size="-1">Read image into current object</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&size_, const std::string &imageSpec_</font></td>
+ <td><font size="-1">Read image of specified size into current
+object. This form is useful for images that do not specifiy their size
+or to specify a size hint for decoding an image. For example, when
+reading a Photo CD, JBIG, or JPEG image, a size request causes the
+library to return an image which is the next resolution greater or
+equal to the specified size. This may result in memory and time savings.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> &blob_</font></td>
+ <td rowspan="5"><font size="-1">Read encoded image of specified
+size from an in-memory <a href="http://www.imagemagick.org/Magick++/Blob.html">BLOB</a> into current
+object. Depending on the method arguments, the Blob size, depth, and
+format may also be specified. Some image formats require that size be
+specified. The default ImageMagick uses for depth depends on its
+Quantum size (8 or 16).  If ImageMagick's Quantum size does not
+match that of the image, the depth may need to be specified.
+ImageMagick can usually automagically detect the image's format.
+When
+a format can't be automagically detected, the format must be specified.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&blob_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> &size_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&blob_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> &size_,
+size_t depth_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&blob_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> &size_,
+size_t depth_, const string &magick_ </font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&blob_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> &size_,
+const
+string &magick_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const size_t width_, const size_t
+height_, std::string map_, const StorageType type_, const void *pixels_</font></td>
+ <td><font size="-1">Read image based on an array of image pixels.
+The pixel data must be in scanline order top-to-bottom. The data can be
+character, short int, integer, float, or double. Float and double
+require the pixels to be normalized [0..1]. The other types are
+[0..MaxRGB].  For example, to create a 640x480 image from
+unsigned red-green-blue character data, use</font>
+ <p><font size="-1">  image.read( 640, 480, "RGB", CharPixel,
+pixels );</font> </p>
+ <p><font size="-1">The parameters are as follows:</font> <br />
+ </p>
+ <table border="0" width="100%">
+ <tbody>
+ <tr>
+ <td><font size="-1">width_</font></td>
+ <td><font size="-1">Width in pixels of the image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">height_</font></td>
+ <td><font size="-1">Height in pixels of the image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">map_</font></td>
+ <td><font size="-1">This character string can be any
+combination or order of R = red, G = green, B = blue, A = alpha, C =
+cyan, Y = yellow M = magenta, and K = black. The ordering reflects the
+order of the pixels in the supplied pixel array.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">type_</font></td>
+ <td><font size="-1">Pixel storage type (CharPixel,
+ShortPixel, IntegerPixel, FloatPixel, or DoublePixel)</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">pixels_</font></td>
+ <td><font size="-1">This array of values contain the pixel
+components as defined by the map_ and type_ parameters. The length of
+the arrays must equal the area specified by the width_ and height_
+values and type_ parameters.</font></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="reduceNoise"></a> <font size="-1">reduceNoise</font></center>
+ </td>
+ <td><font size="-1">const double order_</font></td>
+ <td><font size="-1">reduce noise in image using a noise peak elimination filter.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="randomThreshold"></a>randomThreshold<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const Geometry
+&thresholds_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Random threshold the
+image. Changes the value of individual pixels based on the intensity of
+each pixel compared to a random threshold. The result is a
+low-contrast, two color image. The thresholds_ argument is a
+geometry containing LOWxHIGH thresholds. If the string contains
+2x2, 3x3, or 4x4, then an ordered dither of order 2, 3, or 4 will be
+performed instead. This is a very fast alternative to 'quantize' based
+dithering.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="randomThresholdChannel"></a>randomThresholdChannel<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const Geometry
+&thresholds_, const ChannelType channel_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Random threshold an
+image channel. Similar to <a href="Image++.html#randomThreshold">randomThreshold</a>()
+but restricted to the specified channel.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="roll"></a> <font size="-1">roll</font></center>
+ </td>
+ <td><font size="-1">int columns_, ssize_t rows_</font></td>
+ <td><font size="-1">Roll image (rolls image vertically and
+horizontally) by specified number of columnms and rows)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="rotate"></a> <font size="-1">rotate</font></center>
+ </td>
+ <td><font size="-1">double degrees_</font></td>
+ <td><font size="-1">Rotate image counter-clockwise by specified
+number of degrees.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="sample"></a> <font size="-1">sample</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_ </font></td>
+ <td><font size="-1">Resize image by using pixel sampling algorithm</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="scale"></a> <font size="-1">scale</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Resize image by using simple ratio algorithm</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="segment"></a> <font size="-1">segment</font></center>
+ </td>
+ <td><font size="-1">double clusterThreshold_ = 1.0,</font> <br />
+ <font size="-1">double smoothingThreshold_ = 1.5</font></td>
+ <td><font size="-1">Segment (coalesce similar image components)
+by analyzing the histograms of the color components and identifying
+units that are homogeneous with the fuzzy c-means technique. Also uses <i>quantizeColorSpace</i>
+and <i>verbose</i> image attributes. Specify <i> clusterThreshold_</i>
+,
+as the number  of  pixels  each cluster  must
+exceed
+the cluster threshold to be considered valid. <i>SmoothingThreshold_</i>
+eliminates noise in the  second derivative of the histogram. As
+the
+value is  increased, you can  expect  a  smoother
+second derivative.  The default is 1.5.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="shade"></a> <font size="-1">shade</font></center>
+ </td>
+ <td><font size="-1">double azimuth_ = 30, double elevation_ = 30,</font>
+ <br />
+ <font size="-1">bool colorShading_ = false</font></td>
+ <td><font size="-1">Shade image using distant light source.
+Specify <i> azimuth_</i> and <i>elevation_</i> as the 
+position  of  the light source. By default, the shading
+results as a grayscale image.. Set c<i>olorShading_</i> to <i>true</i>
+to
+shade the red, green, and blue components of the image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="shadow"></a> <font size="-1">shadow</font></center>
+ </td>
+ <td><font size="-1">const double percent_opacity = 80, const double sigma_
+= 0.5, const ssize_t x_ = 0, const ssize_t y_ = 0</font></td>
+ <td><font size="-1">simulate an image shadow</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="sharpen"></a> <font size="-1">sharpen</font></center>
+ </td>
+ <td><font size="-1">const double radius_ = 1, const double sigma_
+= 0.5</font></td>
+ <td><font size="-1">Sharpen pixels in image.  The <i>radius_</i>
+parameter specifies the radius of the Gaussian, in pixels, not counting
+the center pixel.  The <i>sigma_</i> parameter specifies the
+standard deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="sharpenChannel"></a>sharpenChannel<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const ChannelType
+channel_, const double radius_ = 0.0, const double sigma_ = 1.0<br />
+ </small></td>
+ <td style="vertical-align: middle;"><font size="-1">Sharpen pixel
+quantums in an image channel  The <span
+ style="font-style: italic;">channel_</span> parameter specifies the
+channel to sharpen..  The <i>radius_</i>
+parameter specifies the radius of the Gaussian, in pixels, not counting
+the center pixel.  The <i>sigma_</i> parameter specifies the
+standard deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="shave"></a> <font size="-1">shave</font></center>
+ </td>
+ <td><font size="-1">const Geometry &geometry_</font></td>
+ <td><font size="-1">Shave pixels from image edges.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="shear"></a> <font size="-1">shear</font></center>
+ </td>
+ <td><font size="-1">double xShearAngle_, double yShearAngle_</font></td>
+ <td><font size="-1">Shear image (create parallelogram by sliding
+image by X or Y axis).  Shearing slides one edge of an image along
+the X  or  Y axis,  creating  a
+parallelogram.  An X direction shear slides an edge along the X
+axis, while  a  Y  direction shear  slides 
+an edge along the Y axis.  The amount of the shear is controlled
+by a shear angle.  For X direction  shears,  x 
+degrees is measured relative to the Y axis, and similarly, for Y
+direction shears  y  degrees is measured relative to the X
+axis. Empty triangles left over from shearing the  image  are
+filled  with  the  color  defined as <i>borderColor</i>. </font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="solarize"></a> <font size="-1">solarize</font></center>
+ </td>
+ <td><font size="-1">double factor_ = 50.0</font></td>
+ <td><font size="-1">Solarize image (similar to effect seen when
+exposing a photographic film to light during the development process)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="splice"></a> <font size="-1">splice</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">splice the background color into the image</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="spread"></a> <font size="-1">spread</font></center>
+ </td>
+ <td><font size="-1">size_t amount_ = 3</font></td>
+ <td><font size="-1">Spread pixels randomly within image by
+specified amount</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="stegano"></a> <font size="-1">stegano</font></center>
+ </td>
+ <td><font size="-1">const Image &watermark_</font></td>
+ <td><font size="-1">Add a digital watermark to the image (based
+on second image)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="sparseColor"></a> <font size="-1">sparseColor</font></center>
+ </td>
+ <td><font size="-1">const ChannelType channel, const SparseColorMethod method, const size_t number_arguments, const double *arguments </font></td>
+ <td><font size="-1">Sparse color image, given a set of coordinates, interpolates the colors found at those coordinates, across the whole image, using various methods.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="statistics"></a> <font size="-1">statistics</font></center>
+ </td>
+ <td><font size="-1">ImageStatistics *statistics</font></td>
+ <td><font size="-1">Obtain image statistics. Statistics are normalized to the range of 0.0 to 1.0 and are output to the specified ImageStatistics structure. The structure includes members maximum, minimum, mean, standard_deviation, and variance for each of these channels: red, green, blue, and opacity (e.g. statistics->red.maximum).</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="stereo"></a> <font size="-1">stereo</font></center>
+ </td>
+ <td><font size="-1">const Image &rightImage_</font></td>
+ <td><font size="-1">Create an image which appears in stereo when
+viewed with red-blue glasses (Red image on left, blue on right)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="swirl"></a> <font size="-1">swirl</font></center>
+ </td>
+ <td><font size="-1">double degrees_</font></td>
+ <td><font size="-1">Swirl image (image pixels are rotated by
+degrees)</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="texture"></a> <font size="-1">texture</font></center>
+ </td>
+ <td><font size="-1">const Image &texture_</font></td>
+ <td><font size="-1">Layer a texture on pixels matching image
+background color.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="threshold"></a> <font size="-1">threshold</font></center>
+ </td>
+ <td><font size="-1">double threshold_</font></td>
+ <td><font size="-1">Threshold image</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="2">
+ <center><a name="transform"></a> <font size="-1">transform</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&imageGeometry_</font></td>
+ <td rowspan="2"><font size="-1">Transform image based on image
+and crop geometries. Crop geometry is optional.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&imageGeometry_, const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&cropGeometry_ </font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="transparent"></a> <font size="-1">transparent</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a>
+&color_</font></td>
+ <td><font size="-1">Add matte image to image, setting pixels
+matching color to transparent.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="trim"></a> <font size="-1">trim</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Trim edges that are the background color from
+the image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="unsharpmask"></a> <font size="-1">unsharpmask</font></center>
+ </td>
+ <td><font size="-1">double radius_, double sigma_, double
+amount_, double threshold_</font></td>
+ <td><font size="-1">Sharpen the image using the unsharp mask
+algorithm. The <i>radius</i>_
+parameter specifies the radius of the Gaussian, in pixels, not
+counting the center pixel. The <i>sigma</i>_ parameter specifies the
+standard deviation of the Gaussian, in pixels. The <i>amount</i>_
+parameter specifies the percentage of the difference between the
+original and the blur image that is added back into the original. The <i>threshold</i>_
+parameter specifies the threshold in pixels needed to apply the
+diffence amount.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="unsharpmaskChannel"></a>unsharpmaskChannel<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const ChannelType
+channel_, const double radius_, const double sigma_, const double
+amount_, const double threshold_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Sharpen an image
+channel using the unsharp mask algorithm. The <span
+ style="font-style: italic;">channel_</span> parameter specifies the
+channel to sharpen. </small><font size="-1">The <i>radius</i>_
+parameter specifies the radius of the Gaussian, in pixels, not
+counting the center pixel. The <i>sigma</i>_ parameter specifies the
+standard deviation of the Gaussian, in pixels. The <i>amount</i>_
+parameter specifies the percentage of the difference between the
+original and the blur image that is added back into the original. The <i>threshold</i>_
+parameter specifies the threshold in pixels needed to apply the
+diffence amount.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="wave"></a> <font size="-1">wave</font></center>
+ </td>
+ <td><font size="-1">double amplitude_ = 25.0, double wavelength_
+= 150.0</font></td>
+ <td><font size="-1">Alter an image along a sine wave.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;" rowspan="5">
+ <center><a name="write"></a> <font size="-1">write</font></center>
+ </td>
+ <td><font size="-1">const string &imageSpec_</font></td>
+ <td><font size="-1">Write image to a file using filename i<i>mageSpec_</i>
+.</font> <br />
+ <font size="-1"><b><font color="#ff0000">Caution: </font></b> if
+an image format is selected which is capable of supporting fewer
+colors than the original image or quantization has been requested, the
+original image will be quantized to fewer colors. Use a copy of the
+original if this is a problem.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> *blob_</font></td>
+ <td rowspan="3"><font size="-1">Write image to a in-memory <a
+ href="http://www.imagemagick.org/Magick++/Blob.html"> BLOB</a> stored in <i>blob_</i>. The <i>magick</i>_
+parameter specifies the image format to write (defaults to <a
+ href="Image++.html#magick">magick</a> ). The depth_ parameter species the image
+depth (defaults to <a href="Image++.html#depth"> depth</a> ).</font> <br />
+ <font size="-1"><b><font color="#ff0000">Caution: </font></b> if
+an image format is selected which is capable of supporting fewer
+colors than the original image or quantization has been requested, the
+original image will be quantized to fewer colors. Use a copy of the
+original if this is a problem.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> *blob_,
+std::string &magick_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> *blob_,
+std::string &magick_, size_t depth_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const ssize_t x_, const ssize_t y_, const size_t
+columns_, const size_t rows_, const std::string &map_,
+const StorageType type_, void *pixels_</font></td>
+ <td><font size="-1">Write pixel data into a buffer you supply.
+The data is saved either as char, short int, integer, float or double
+format in the order specified by the type_ parameter. For example, we
+want to extract scanline 1 of a 640x480 image as character data in
+red-green-blue order:</font>
+ <p><font size="-1">  image.write(0,0,640,1,"RGB",0,pixels);</font>
+ </p>
+ <p><font size="-1">The parameters are as follows:</font> <br />
+ </p>
+ <table border="0" width="100%">
+ <tbody>
+ <tr>
+ <td><font size="-1">x_</font></td>
+ <td><font size="-1">Horizontal ordinate of left-most
+coordinate of region to extract.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">y_</font></td>
+ <td><font size="-1">Vertical ordinate of top-most
+coordinate of region to extract.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">columns_</font></td>
+ <td><font size="-1">Width in pixels of the region to
+extract.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">rows_</font></td>
+ <td><font size="-1">Height in pixels of the region to
+extract.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">map_</font></td>
+ <td><font size="-1">This character string can be any
+combination or order of R = red, G = green, B = blue, A = alpha, C =
+cyan, Y = yellow, M = magenta, and K = black. The ordering reflects
+the order of the pixels in the supplied pixel array.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">type_</font></td>
+ <td><font size="-1">Pixel storage type (CharPixel,
+ShortPixel, IntegerPixel, FloatPixel, or DoublePixel)</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">pixels_</font></td>
+ <td><font size="-1">This array of values contain the pixel
+components as defined by the map_ and type_ parameters. The length of
+the arrays must equal the area specified by the width_ and height_
+values and type_ parameters.</font></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="resize"></a> <font size="-1">resize</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Resize image to specified size.</font></td>
+ </tr>
+ </tbody>
+</table>
+<center>
+<h3> <a name="Image Attributes"></a> Image Attributes</h3>
+</center>
+Image attributes are set and obtained via methods in Image. Except for
+methods which accept pointer arguments (e.g. c<tt>hromaBluePrimary)</tt>
+all methods return attributes by value.
+<p>Image attributes are easily used. For example, to set the resolution
+of the TIFF file "file.tiff" to 150 dots-per-inch (DPI) in both the
+horizontal and vertical directions, you can use the following example
+code: </p>
+<pre class="code">
+string filename("file.tiff");
+Image image;
+image.read(filename);
+image.resolutionUnits(PixelsPerInchResolution);
+image.density(Geometry(150,150)); // could also use image.density("150x150")
+image.write(filename)
+</pre>
+The supported image attributes and the method arguments required to
+obtain them are shown in the following table: <br />
+ 
+<table border="1">
+ <caption>Image Attributes</caption> <tbody>
+ <tr>
+ <td>
+ <center><b>Function</b></center>
+ </td>
+ <td>
+ <center><b>Type</b></center>
+ </td>
+ <td>
+ <center><b>Get Signature</b></center>
+ </td>
+ <td>
+ <center><b>Set Signature</b></center>
+ </td>
+ <td>
+ <center><b>Description</b></center>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="adjoin"></a> <font size="-1">adjoin</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Join images into a single multi-image file.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="antiAlias"></a> <font size="-1">antiAlias</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Control antialiasing of rendered Postscript
+and Postscript or TrueType fonts. Enabled by default.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="animationDelay"></a> <font size="-1">animation-</font>
+ <br />
+ <font size="-1">Delay</font></center>
+ </td>
+ <td><font size="-1">size_t (0 to 65535)</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t delay_</font></td>
+ <td><font size="-1">Time in 1/100ths of a second (0 to 65535)
+which must expire before displaying the next image in an animated
+sequence. This option is useful for regulating the animation of a
+sequence  of GIF images within Netscape.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="animationIterations"></a> <font size="-1">animation-</font>
+ <br />
+ <font size="-1">Iterations</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t iterations_</font></td>
+ <td><font size="-1">Number of iterations to loop an animation
+(e.g. Netscape loop extension) for.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle; text-align: center;"><small><a
+ name="attribute"></a>attribute<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>string<br />
+ </small></td>
+ <td style="vertical-align: top;" valign="top"><small>const
+std::string name_<br />
+ </small></td>
+ <td style="vertical-align: top;" valign="top"><small>const
+std::string name_, const std::string value_</small></td>
+ <td style="vertical-align: middle;"><small>An arbitrary named
+image attribute. Any number of named attributes may be attached to the
+image. For example, the image comment is a named image attribute with
+the name "comment". EXIF tags are attached to the image as named
+attributes. Use the syntax "EXIF:<tag>" to request an EXIF tag
+similar to "EXIF:DateTime".</small><br />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="backgroundColor"></a> <font size="-1">background-</font>
+ <br />
+ <font size="-1">Color</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a>
+&color_</font></td>
+ <td><font size="-1">Image background color</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="backgroundTexture"></a> <font size="-1">background-</font>
+ <br />
+ <font size="-1">Texture</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const string &texture_</font></td>
+ <td><font size="-1">Image file name to use as the background
+texture. Does not modify image pixels.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="baseColumns"></a> <font size="-1">baseColumns</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Base image width (before transformations)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="baseFilename"></a> <font size="-1">baseFilename</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Base image filename (before transformations)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="baseRows"></a> <font size="-1">baseRows</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Base image height (before transformations)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="borderColor"></a> <font size="-1">borderColor</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"> const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a>
+&color_</font></td>
+ <td><font size="-1">Image border color</font></td>
+ </tr>
+ <tr>
+ <td><a name="boundingBox"></a> <font size="-1">boundingBox</font></td>
+ <td><font size="-1">Geometry</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Return smallest bounding box enclosing
+non-border pixels. The current fuzz value is used when discriminating
+between pixels. This is the crop bounding box used by
+crop(Geometry(0,0)).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="boxColor"></a> <font size="-1">boxColor</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a>
+&boxColor_</font></td>
+ <td><font size="-1">Base color that annotation text is rendered
+on.</font></td>
+ </tr>
+ <tr>
+ <td><a name="cacheThreshold"></a> <font size="-1">cacheThreshold</font></td>
+ <td><font size="-1">size_t</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">const size_t</font></td>
+ <td><font size="-1">Pixel cache threshold in bytes. Once this
+threshold is exceeded, all subsequent pixels cache operations are
+to/from disk. This is a static method and the attribute it sets is
+shared by all Image objects.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle;" valign="middle"><small><a
+ name="channelDepth"></a>channelDepth<br />
+ </small></td>
+ <td style="vertical-align: middle;" valign="middle"><small>size_t
+<br />
+ </small></td>
+ <td style="vertical-align: middle;" valign="middle"><small>const
+ChannelType channel_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const ChannelType
+channel_, const size_t depth_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Channel modulus depth.
+The channel modulus depth represents the minimum number of bits
+required
+to support the channel without loss. Setting the channel's modulus
+depth
+modifies the channel (i.e. discards resolution) if the requested
+modulus
+depth is less than the current modulus depth, otherwise the channel is
+not altered. There is no attribute associated with the modulus depth so
+the current modulus depth is obtained by inspecting the pixels. As a
+result, the depth returned may be less than the most recently set
+channel depth. Subsequent image processing may result in increasing the
+channel depth.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chromaBluePrimary"></a> <font size="-1">chroma-</font>
+ <br />
+ <font size="-1">BluePrimary</font></center>
+ </td>
+ <td><font size="-1">double x & y</font></td>
+ <td><font size="-1">double *x_, double *y_</font></td>
+ <td><font size="-1">double x_, double y_</font></td>
+ <td><font size="-1">Chromaticity blue primary point (e.g. x=0.15,
+y=0.06)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chromaGreenPrimary"></a> <font size="-1">chroma-</font>
+ <br />
+ <font size="-1">GreenPrimary</font></center>
+ </td>
+ <td><font size="-1">double x & y</font></td>
+ <td><font size="-1">double *x_, double *y_</font></td>
+ <td><font size="-1">double x_, double y_</font></td>
+ <td><font size="-1">Chromaticity green primary point (e.g. x=0.3,
+y=0.6)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chromaRedPrimary"></a> <font size="-1">chroma-</font>
+ <br />
+ <font size="-1">RedPrimary</font></center>
+ </td>
+ <td><font size="-1">double x & y</font></td>
+ <td><font size="-1">double *x_, double *y_</font></td>
+ <td><font size="-1">double x_, double y_</font></td>
+ <td><font size="-1">Chromaticity red primary point (e.g. x=0.64,
+y=0.33)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chromaWhitePoint"></a> <font size="-1">chroma-</font>
+ <br />
+ <font size="-1">WhitePoint</font></center>
+ </td>
+ <td><font size="-1">double x & y</font></td>
+ <td><font size="-1">double*x_, double *y_</font></td>
+ <td><font size="-1">double x_, double y_</font></td>
+ <td><font size="-1">Chromaticity white point (e.g. x=0.3127,
+y=0.329)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="classType"></a> <font size="-1">classType</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ClassType">ClassType</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"> <a href="http://www.imagemagick.org/Magick++/Enumerations.html#ClassType">ClassType</a>
+class_</font></td>
+ <td><font size="-1">Image storage class.  Note that
+conversion from a DirectClass image to a PseudoClass image may result
+in a loss of color due to the limited size of the palette (256 or
+65535 colors).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="clipMask"></a> <font size="-1">clipMask</font></center>
+ </td>
+ <td><font size="-1">Image</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const Image &clipMask_</font></td>
+ <td><font size="-1">Associate a clip mask image with the current
+image. The clip mask image must have the same dimensions as the current
+image or an exception is thrown. Clipping occurs wherever pixels are
+transparent in the clip mask image. Clipping Pass an invalid image to
+unset an existing clip mask.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="colorFuzz"></a> <font size="-1">colorFuzz</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">double fuzz_</font></td>
+ <td><font size="-1">Colors within this distance are considered
+equal. A number of algorithms search for a target  color. By
+default the color must be exact. Use this option to match colors that
+are close to the target color in RGB space.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="colorMap"></a> <font size="-1">colorMap</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> </font></td>
+ <td><font size="-1">size_t index_</font></td>
+ <td><font size="-1">size_t index_, const <a
+ href="http://www.imagemagick.org/Magick++/Color.html"> Color</a> &color_</font></td>
+ <td><font size="-1">Color at colormap index.</font></td>
+ </tr>
+ <tr>
+ <td valign="middle">
+ <div style="text-align:center"><a name="colorMapSize"></a> <font size="-1">colorMapSize<br />
+ </font></div>
+ </td>
+ <td valign="middle"><font size="-1">size_t<br />
+ </font></td>
+ <td valign="middle"><font size="-1">void<br />
+ </font></td>
+ <td valign="middle"><font size="-1">size_t entries_<br />
+ </font></td>
+ <td valign="middle"><font size="-1">Number of entries in the
+colormap. Setting the colormap size may extend or truncate the
+colormap.
+The maximum number of supported entries is specified by the <i>MaxColormapSize</i>constant,
+and is dependent on the value of QuantumDepth when ImageMagick is
+compiled. An exception is thrown if more entries are requested than may
+be supported. Care should be taken when truncating the colormap to
+ensure that the image colormap indexes reference valid colormap entries.</font><br />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="colorSpace"></a> <font size="-1">colorSpace</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ColorspaceType">ColorspaceType</a>
+colorSpace_</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ColorspaceType">ColorspaceType</a>
+colorSpace_</font></td>
+ <td><font size="-1">The colorspace (e.g. CMYK) used to represent
+the image pixel colors. Image pixels are always stored as RGB(A) except
+for the case of CMY(K).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="columns"></a> <font size="-1">columns</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Image width</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="comment"></a> <font size="-1">comment</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Image comment</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="compose"></a> <font size="-1">compose</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#CompositeOperator">CompositeOperator</a>
+ </font></td>
+ <td><small><font size="-1"><small>void</small></font></small></td>
+ <td><small><font size="-1"><small><a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#CompositeOperator">CompositeOperator</a>
+compose_</small></font></small></td>
+ <td><font size="-1">Composition operator to be used when
+composition is implicitly used (such as for image flattening).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="compressType"></a> <font size="-1">compress-</font>
+ <br />
+ <font size="-1">Type</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#CompressionType">CompressionType</a>
+ </font></td>
+ <td><small><font size="-1"><small>void</small></font></small></td>
+ <td><small><font size="-1"><small><a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#CompressionType">CompressionType</a>
+compressType_</small></font></small></td>
+ <td><font size="-1">Image compresion type. The default is the
+compression type of the specified image file.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="debug"></a> <font size="-1">debug</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><small><font size="-1"><small>void</small></font></small></td>
+ <td><small><font size="-1"><small>bool flag_</small></font></small></td>
+ <td><font size="-1">Enable printing of internal debug messages
+from ImageMagick as it executes.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center; vertical-align: middle;"><small><a
+ name="defineValue"></a>defineValue<br />
+ </small></td>
+ <td style="vertical-align: middle; text-align: left;"><small>string<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const std::string
+&magick_, const std::string &key_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const std::string
+&magick_, const std::string &key_,  const std::string
+&value_<br />
+ </small></td>
+ <td style="vertical-align: top;"><small>Set or obtain a
+definition string to applied when encoding or decoding the specified
+format. The meanings of the definitions are format specific. The format
+is designated by the <span style="font-style: italic;">magick_</span>
+argument, the format-specific key is designated by <span
+ style="font-style: italic;">key_</span>, and the associated value is
+specified by <span style="font-style: italic;">value_</span>. See the
+defineSet() method if the key must be removed entirely.</small><br />
+ </td>
+ </tr>
+ <tr>
+ <td style="text-align: center; vertical-align: middle;"><small><a
+ name="defineSet"></a>defineSet<br />
+ </small></td>
+ <td style="vertical-align: middle; text-align: left;"><small>bool<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const std::string
+&magick_, const std::string &key_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const std::string
+&magick_, const std::string &key_, bool flag_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Set or obtain a
+definition flag to applied when encoding or decoding the specified
+format.</small><small>. Similar to the defineValue() method except that
+passing the <span style="font-style: italic;">flag_</span> value
+'true'
+creates a value-less define with that format and key. Passing the <span
+ style="font-style: italic;">f</span><span style="font-style: italic;">lag_</span>
+value 'false' removes any existing matching definition. The method
+returns 'true' if a matching key exists, and 'false' if no matching key
+exists.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="density"></a> <font size="-1">density</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>  
+(default 72x72)</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&density_</font></td>
+ <td><font size="-1">Vertical and horizontal resolution in pixels
+of the image. This option specifies an image density when decoding a
+Postscript or Portable Document page. Often used with <i>psPageSize</i>.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="depth"></a> <font size="-1">depth</font></center>
+ </td>
+ <td><font size="-1"> size_t (8-32)</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t depth_</font></td>
+ <td><font size="-1">Image depth. Used to specify the bit depth
+when reading or writing  raw images or when the output format
+supports multiple depths. Defaults to the quantum depth that
+ImageMagick is compiled with.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="endian"></a> <font size="-1">endian</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#EndianType">EndianType</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#EndianType">EndianType</a>
+endian_</font></td>
+ <td><font size="-1">Specify (or obtain) endian option for formats
+which support it.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="directory"></a> <font size="-1">directory</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"> </font></td>
+ <td><font size="-1">Tile names from within an image montage</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="file"></a> <font size="-1">file</font></center>
+ </td>
+ <td><font size="-1">FILE *</font></td>
+ <td><font size="-1">FILE *</font></td>
+ <td><font size="-1">FILE *file_</font></td>
+ <td><font size="-1">Image file descriptor.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fileName"></a> <font size="-1">fileName</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const string &fileName_</font></td>
+ <td><font size="-1">Image file name.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fileSize"></a> <font size="-1">fileSize</font></center>
+ </td>
+ <td><font size="-1">off_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Number of bytes of the image on disk</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fillColor"></a> <font size="-1">fillColor</font></center>
+ </td>
+ <td><font size="-1">Color</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const Color &fillColor_</font></td>
+ <td><font size="-1">Color to use when filling drawn objects</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fillPattern"></a> <font size="-1">fillPattern</font></center>
+ </td>
+ <td><font size="-1">Image</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const Image &fillPattern_</font></td>
+ <td><font size="-1">Pattern image to use when filling drawn
+objects.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fillRule"></a> <font size="-1">fillRule</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#FillRule">FillRule</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const Magick::FillRule &fillRule_</font></td>
+ <td><font size="-1">Rule to use when filling drawn objects.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="filterType"></a> <font size="-1">filterType</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#FilterTypes">FilterTypes</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#FilterTypes">FilterTypes</a>
+filterType_</font></td>
+ <td><font size="-1">Filter to use when resizing image. The
+reduction filter employed has a sigificant effect on the time required
+to resize an image and the resulting quality. The default filter is <i>Lanczos</i>
+which has been shown to produce high quality results when reducing most
+images.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="font"></a> <font size="-1">font</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const string &font_</font></td>
+ <td><font size="-1">Text rendering font. If the font is a fully
+qualified X server font name, the font is obtained from an X 
+server. To use a TrueType font, precede the TrueType filename with an
+@. Otherwise, specify  a  Postscript font name (e.g.
+"helvetica").</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fontPointsize"></a> <font size="-1">fontPointsize</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t pointSize_</font></td>
+ <td><font size="-1">Text rendering font point size</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fontTypeMetrics"></a> <font size="-1">fontTypeMetrics</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/TypeMetric.html">TypeMetric</a> </font></td>
+ <td><font size="-1">const std::string &text_, <a
+ href="http://www.imagemagick.org/Magick++/TypeMetric.html"> TypeMetric</a> *metrics</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Update metrics with font type metrics using
+specified <i>text</i>, and current <a href="Image++.html#font">font</a> and <a
+ href="Image++.html#fontPointsize">fontPointSize</a> settings.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="format"></a> <font size="-1">format</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Long form image format description.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="gamma"></a> <font size="-1">gamma</font></center>
+ </td>
+ <td><font size="-1">double (typical range 0.8 to 2.3)</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Gamma level of the image. The same color
+image displayed on two different  workstations  may 
+look  different due to differences in the display monitor. 
+Use gamma correction  to  adjust  for this 
+color  difference.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="geometry"></a> <font size="-1">geometry</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Preferred size of the image when encoding.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="gifDisposeMethod"></a> <font size="-1">gifDispose-</font>
+ <br />
+ <font size="-1">Method</font></center>
+ </td>
+ <td><font size="-1">size_t</font> <br />
+ <font size="-1">{ 0 = Disposal not specified,</font> <br />
+ <font size="-1">1 = Do not dispose of graphic,</font> <br />
+ <font size="-1">3 = Overwrite graphic with background color,</font>
+ <br />
+ <font size="-1">4 = Overwrite graphic with previous graphic. }</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t disposeMethod_</font></td>
+ <td><font size="-1">GIF disposal method. This option is used to
+control how successive frames are rendered (how the preceding frame is
+disposed of) when creating a GIF animation.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="iccColorProfile"></a> <font size="-1">iccColorProfile</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a>
+&colorProfile_</font></td>
+ <td><font size="-1">ICC color profile. Supplied via a <a
+ href="http://www.imagemagick.org/Magick++/Blob.html"> Blob</a> since Magick++/ and ImageMagick do not
+currently support formating this data structure directly. 
+Specifications are available from the <a href="http://www.color.org/">
+International Color Consortium</a> for the format of ICC color profiles.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="interlaceType"></a> <font size="-1">interlace-</font>
+ <br />
+ <font size="-1">Type</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#InterlaceType">InterlaceType</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#InterlaceType">InterlaceType</a>
+interlace_</font></td>
+ <td><font size="-1">The type of interlacing scheme (default <i>NoInterlace</i>
+). This option is used to specify the type of  interlacing
+scheme  for  raw  image formats such as RGB or YUV. <i>NoInterlace</i>
+means do not  interlace, <i>LineInterlace</i> uses scanline
+interlacing, and <i>PlaneInterlace</i> uses plane interlacing. <i>
+PartitionInterlace</i> is like <i>PlaneInterlace</i> except the 
+different planes  are saved  to individual files (e.g. 
+image.R, image.G, and image.B). Use <i>LineInterlace</i> or <i>
+PlaneInterlace</i> to create an interlaced GIF or progressive JPEG
+image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="iptcProfile"></a> <font size="-1">iptcProfile</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Blob.html">Blob</a> &
+iptcProfile_</font></td>
+ <td><font size="-1">IPTC profile. Supplied via a <a
+ href="http://www.imagemagick.org/Magick++/Blob.html"> Blob</a> since Magick++ and ImageMagick do not
+currently  support formating this data structure directly.
+Specifications are available from the <a href="http://www.iptc.org/">
+International Press Telecommunications Council</a> for IPTC profiles.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="label"></a> <font size="-1">label</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const string &label_</font></td>
+ <td><font size="-1">Image label</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="magick"></a> <font size="-1">magick</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"> const string &magick_</font></td>
+ <td><font size="-1">Get image format (e.g. "GIF")</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="matte"></a> <font size="-1">matte</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">bool matteFlag_</font></td>
+ <td><font size="-1">True if the image has transparency. If set
+True, store matte channel if  the image has one otherwise create
+an opaque one.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="matteColor"></a> <font size="-1">matteColor</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Color.html">Color</a>
+&matteColor_</font></td>
+ <td><font size="-1">Image matte (frame) color</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="meanErrorPerPixel"></a> <font size="-1">meanError-</font>
+ <br />
+ <font size="-1">PerPixel</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">The mean error per pixel computed when an
+image is color reduced. This parameter is only valid if verbose is set
+to true and the image has just been quantized.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center; vertical-align: middle;"><font
+ size="-1"><a name="modulusDepth"></a>modulusDepth<br />
+ </font></td>
+ <td style="text-align: left; vertical-align: middle;"><small>size_t
+<br />
+ </small></td>
+ <td style="text-align: left; vertical-align: middle;"><small><font
+ size="-1"><small>void<br />
+ </small></font></small></td>
+ <td style="text-align: left; vertical-align: middle;"><small>size_t
+depth_<br />
+ </small></td>
+ <td style="text-align: left; vertical-align: middle;"><small>Image
+modulus depth (minimum number of bits required to support
+red/green/blue components without loss of accuracy). The pixel modulus
+depth may be decreased by supplying a value which is less than the
+current value, updating the pixels (reducing accuracy) to the new
+depth.
+The pixel modulus depth can not be increased over the current value
+using this method.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="monochrome"></a> <font size="-1">monochrome</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Transform the image to black and white</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="montageGeometry"></a> <font size="-1">montage-</font>
+ <br />
+ <font size="-1">Geometry</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Tile size and offset within an image montage.
+Only valid for montage images.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="normalizedMaxError"></a> <font size="-1">normalized-</font>
+ <br />
+ <font size="-1">MaxError</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">The normalized max error per pixel computed
+when an image is color reduced. This parameter is only valid if verbose
+is set to true and the image has just been quantized.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="normalizedMeanError"></a> <font size="-1">normalized-</font>
+ <br />
+ <font size="-1">MeanError</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">The normalized mean error per pixel computed
+when an image is color reduced. This parameter is only valid if verbose
+is set to true and the image has just been quantized.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center; vertical-align: middle;"><small><a
+ name="orientation"></a>orientation<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small><a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#OrientationType">OrientationType</a></small></td>
+ <td style="vertical-align: top;"><small>void</small><br />
+ </td>
+ <td style="vertical-align: middle;"><small><a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#OrientationType">OrientationType</a>
+orientation_</small></td>
+ <td style="vertical-align: top;"><small>Image orientation.
+ Supported by some file formats such as DPX and TIFF. Useful for
+turning the right way up.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="packets"></a> <font size="-1">packets</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">The number of runlength-encoded packets in</font>
+ <br />
+ <font size="-1">the image</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="packetSize"></a> <font size="-1">packetSize</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">The number of bytes in each pixel packet</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="page"></a> <font size="-1">page</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Geometry.html#PostscriptPageSize">Geometry</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const <a
+ href="http://www.imagemagick.org/Magick++/Geometry.html#PostscriptPageSize"> Geometry</a> &pageSize_</font></td>
+ <td><font size="-1">Preferred size and location of an image
+canvas.</font>
+ <p><font size="-1">Use this option to specify the dimensions
+and position of the Postscript page in dots per inch or a TEXT page in
+pixels. This option is typically used in concert with <i><a
+ href="Image++.html#density"> density</a> </i>.</font> </p>
+ <p><font size="-1">Page may also be used to position a GIF
+image (such as for a scene in an animation)</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="pixelColor"></a> <font size="-1">pixelColor</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Color.html">Color</a> </font></td>
+ <td><font size="-1">ssize_t x_, ssize_t y_</font></td>
+ <td><font size="-1">ssize_t x_, ssize_t y_, const <a
+ href="http://www.imagemagick.org/Magick++/Color.html"> Color</a> &color_</font></td>
+ <td><font size="-1">Get/set pixel color at location x & y.</font></td>
+ </tr>
+ <tr>
+ <td valign="top">
+ <div style="text-align:center"><a name="profile"></a> <small>profile</small><br />
+ </div>
+ </td>
+ <td valign="top"><a href="http://www.imagemagick.org/Magick++/Blob.html"><small> Blob</small><small><br />
+ </small></a> </td>
+ <td valign="top"><small>const std::string name_</small><small><br />
+ </small></td>
+ <td valign="top"><small>const std::string name_, const Blob
+&colorProfile_</small><small><br />
+ </small></td>
+ <td valign="top"><small>Get/set/remove </small><small> a named
+profile</small><small>. Valid names include </small><small>"*",
+"8BIM", "ICM", "IPTC", or a user/format-defined profile name. </small><br />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quality"></a> <font size="-1">quality</font></center>
+ </td>
+ <td><font size="-1">size_t (0 to 100)</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t quality_</font></td>
+ <td><font size="-1">JPEG/MIFF/PNG compression level (default 75).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeColors"></a> <font size="-1">quantize-</font>
+ <br />
+ <font size="-1">Colors</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t colors_</font></td>
+ <td><font size="-1">Preferred number of colors in the image. The
+actual number of colors in the image may be less than your request, but
+never more. Images with less unique colors than specified with this
+option will have any duplicate or unused colors removed.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeColorSpace"></a> <font size="-1">quantize-</font>
+ <br />
+ <font size="-1">ColorSpace</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ColorspaceType">ColorspaceType</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ColorspaceType">ColorspaceType</a>
+colorSpace_</font></td>
+ <td><font size="-1">Colorspace to quantize colors in (default
+RGB). Empirical evidence suggests that distances in color spaces such
+as YUV or YIQ correspond to perceptual color differences more closely
+than do distances in RGB space. These color spaces may give better
+results when color reducing an image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeDither"></a> <font size="-1">quantize-</font>
+ <br />
+ <font size="-1">Dither</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Apply Floyd/Steinberg error diffusion to the
+image. The basic strategy of dithering is to  trade 
+intensity
+resolution  for  spatial  resolution  by 
+averaging the intensities  of  several 
+neighboring  pixels. Images which  suffer  from 
+severe  contouring  when  reducing colors can be
+improved with this option. The quantizeColors or monochrome option must
+be set for this option to take effect.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeTreeDepth"></a> <font size="-1">quantize-</font>
+ <br />
+ <font size="-1">TreeDepth</font></center>
+ </td>
+ <td><font size="-1">size_t </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t treeDepth_</font></td>
+ <td><font size="-1">Depth of the quantization color
+classification tree. Values of 0 or 1 allow selection of the optimal
+tree depth for the color reduction algorithm. Values between 2 and 8
+may be used to manually adjust the tree depth.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="renderingIntent"></a> <font size="-1">rendering-</font>
+ <br />
+ <font size="-1">Intent</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#RenderingIntent">RenderingIntent</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#RenderingIntent">RenderingIntent</a>
+render_</font></td>
+ <td><font size="-1">The type of rendering intent</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="resolutionUnits"></a> <font size="-1">resolution-</font>
+ <br />
+ <font size="-1">Units</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ResolutionType">ResolutionType</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ResolutionType">ResolutionType</a>
+units_</font></td>
+ <td><font size="-1">Units of image resolution</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="rows"></a> <font size="-1">rows</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">The number of pixel rows in the image</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="scene"></a> <font size="-1">scene</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t scene_</font></td>
+ <td><font size="-1">Image scene number</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="signature"></a> <font size="-1">signature</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">bool force_ = false</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Image MD5 signature. Set force_ to 'true' to
+force re-computation of signature.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="size"></a> <font size="-1">size</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a> </font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Width and height of a raw image (an image
+which does not support width and height information).  Size may
+also be used to affect the image size read from a multi-resolution
+format (e.g. Photo CD, JBIG, or JPEG.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center;">
+ <center><a name="strip"></a> <font size="-1">strip</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">strips an image of all profiles and comments.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeAntiAlias"></a> <font size="-1">strokeAntiAlias</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Enable or disable anti-aliasing when drawing
+object outlines.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeColor"></a> <font size="-1">strokeColor</font></center>
+ </td>
+ <td><font size="-1">Color</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const Color &strokeColor_</font></td>
+ <td><font size="-1">Color to use when drawing object outlines</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeDashOffset"></a> <font size="-1">strokeDashOffset</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">double strokeDashOffset_</font></td>
+ <td><font size="-1">While drawing using a dash pattern, specify
+distance into the dash pattern to start the dash (default 0).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeDashArray"></a> <font size="-1">strokeDashArray</font></center>
+ </td>
+ <td><font size="-1">const double*</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const double* strokeDashArray_</font></td>
+ <td><font size="-1">Specify the pattern of dashes and gaps used
+to stroke paths. The strokeDashArray represents a zero-terminated
+array of numbers that specify the lengths (in pixels) of alternating
+dashes and gaps in user units. If an odd number of values is provided,
+then the list of values is repeated to yield an even number of
+values.  A typical strokeDashArray_ array might contain the
+members 5 3 2 0, where the zero value indicates the end of the pattern
+array.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeLineCap"></a> <font size="-1">strokeLineCap</font></center>
+ </td>
+ <td><font size="-1">LineCap</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">LineCap lineCap_</font></td>
+ <td><font size="-1">Specify the shape to be used at the corners
+of paths (or other vector shapes) when they are stroked. Values of
+LineJoin are UndefinedJoin, MiterJoin, RoundJoin, and BevelJoin.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeLineJoin"></a> <font size="-1">strokeLineJoin</font></center>
+ </td>
+ <td><font size="-1">LineJoin</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">LineJoin lineJoin_</font></td>
+ <td><font size="-1">Specify the shape to be used at the corners
+of paths (or other vector shapes) when they are stroked. Values of
+LineJoin are UndefinedJoin, MiterJoin, RoundJoin, and BevelJoin.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeMiterLimit"></a> <font size="-1">strokeMiterLimit</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t miterLimit_</font></td>
+ <td><font size="-1">Specify miter limit. When two line segments
+meet at a sharp angle and miter joins have been specified for
+'lineJoin', it is possible for the miter to extend far beyond the
+thickness of the line stroking the path. The miterLimit' imposes a
+limit on the ratio of the miter length to the 'lineWidth'. The default
+value of this parameter is 4.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeWidth"></a> <font size="-1">strokeWidth</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">double strokeWidth_</font></td>
+ <td><font size="-1">Stroke width for use when drawing vector
+objects (default one)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokePattern"></a> <font size="-1">strokePattern</font></center>
+ </td>
+ <td><font size="-1">Image</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const Image &strokePattern_</font></td>
+ <td><font size="-1">Pattern image to use while drawing object
+stroke (outlines).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="subImage"></a> <font size="-1">subImage</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t subImage_</font></td>
+ <td><font size="-1">Subimage of an image sequence</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="subRange"></a> <font size="-1">subRange</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">size_t subRange_</font></td>
+ <td><font size="-1">Number of images relative to the base image</font></td>
+ </tr>
+ <tr>
+ <td valign="middle">
+ <div style="text-align:center"><a name="textEncoding"></a> <small>textEncoding</small><br />
+ </div>
+ </td>
+ <td valign="middle"><small>string</small><small><br />
+ </small></td>
+ <td valign="middle"><small>void</small><small><br />
+ </small></td>
+ <td valign="middle"><small>const std::string &encoding_</small><small><br />
+ </small></td>
+ <td valign="top"><small>Specify the code set to use for text
+annotations. The only character encoding which may be specified at
+this time is "UTF-8" for representing </small><small><a
+ href="http://www.unicode.org/"> Unicode </a> </small><small>as a
+sequence of bytes. Specify an empty string to use the default ASCII
+encoding. Successful text annotation using Unicode may require fonts
+designed to support Unicode.</small><br />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="tileName"></a> <font size="-1">tileName</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const string &tileName_</font></td>
+ <td><font size="-1">Tile name</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="totalColors"></a> <font size="-1">totalColors</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">Number of colors in the image</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="type"></a> <font size="-1">type</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#ImageType">ImageType</a>
+ </font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#ffffff"><font size="-1"><a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#ImageType"> ImageType</a> </font></td>
+ <td><font size="-1">Image type.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="verbose"></a> <font size="-1">verbose</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">bool verboseFlag_</font></td>
+ <td><font size="-1">Print detailed information about the image</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="view"></a> <font size="-1">view</font></center>
+ </td>
+ <td><font size="-1">string</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const string &view_</font></td>
+ <td><font size="-1">FlashPix viewing parameters.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="virtualPixelMethod"></a> <font size="-1">virtualPixelMethod</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#VirtualPixelMethod">VirtualPixelMethod</a>
+ </font></td>
+ <td><small><font size="-1"><small>void</small></font></small></td>
+ <td><small><font size="-1"><small><a
+ href="http://www.imagemagick.org/Magick++/Enumerations.html#VirtualPixelMethod">VirtualPixelMethod</a>
+virtualPixelMethod_</small></font></small></td>
+ <td><font size="-1">Image virtual pixel method.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="x11Display"></a> <font size="-1">x11Display</font></center>
+ </td>
+ <td><font size="-1">string (e.g. "hostname:0.0")</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">const string &display_</font></td>
+ <td><font size="-1">X11 display to display to, obtain fonts from,
+or to capture image from</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="xResolution"></a> <font size="-1">xResolution</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">x resolution of the image</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="yResolution"></a> <font size="-1">yResolution</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">void</font></td>
+ <td bgcolor="#666666"><font size="-1"> </font></td>
+ <td><font size="-1">y resolution of the image</font></td>
+ </tr>
+ </tbody>
+</table>
+<center>
+<h3> <a name="Raw Image Pixel Access"></a> Low-Level Image Pixel Access</h3>
+</center>
+Image pixels (of type <i><a href="http://www.imagemagick.org/Magick++/Quantum.html">Quantum</a> </i>)
+may be accessed directly via the <i>Image Pixel Cache</i> .  The
+image pixel cache is a rectangular window into the actual image pixels
+(which may be in memory, memory-mapped from a disk file, or entirely on
+disk). Two interfaces exist to access the <i>Image Pixel Cache.</i>
+The
+interface described here (part of the <i>Image</i> class) supports
+only
+one view at a time. See the <i><a href="http://www.imagemagick.org/Magick++/Pixels.html">Pixels</a> </i>
+class for a more abstract interface which supports simultaneous pixel
+views (up to the number of rows). As an analogy, the interface
+described
+here relates to the <i><a href="http://www.imagemagick.org/Magick++/Pixels.html">Pixels</a> </i> class as
+stdio's gets() relates to fgets(). The <i><a href="http://www.imagemagick.org/Magick++/Pixels.html"> Pixels</a>
+</i>class provides the more general form of the interface.
+<p>Obtain existing image pixels via <i>getPixels()</i>. Create a new
+pixel region using <i>setPixels().</i></p>
+<p>In order to ensure that only the current generation of the image is
+modified, the Image's <a href="Image++.html#modifyImage">modifyImage()</a> method
+should be invoked to reduce the reference count on the underlying image
+to one. If this is not done, then it is possible for a previous
+generation of the image to be modified due to the use of reference
+counting when copying or constructing an Image.<br />
+</p>
+<p>Depending on the capabilities of the operating system, and the
+relationship of the window to the image, the pixel cache may be a copy
+of the pixels in the selected window, or it may be the actual image
+pixels. In any case calling <i>syncPixels()</i> insures that the base
+image is updated with the contents of the modified pixel cache. The
+method <i> readPixels()</i> supports copying foreign pixel data
+formats
+into the pixel cache according to the <i>QuantumTypes</i>. The method <i>writePixels()</i>
+supports copying the pixels in the cache to a foreign pixel
+representation according to the format specified by <i>QuantumTypes</i>.</p>
+<p>The pixel region is effectively a small image in which the pixels
+may be accessed, addressed, and updated, as shown in the following
+example:</p>
+<pre class="code">
+<img class="icon" src="http://www.imagemagick.org/Magick++/Cache.png" name="Graphic1" width="254" border="0" alt="cache" />
+Image image("cow.png");
+// Ensure that there are no other references to this image.
+image.modifyImage();
+// Set the image type to TrueColor DirectClass representation.
+image.type(TrueColorType);
+// Request pixel region with size 60x40, and top origin at 20x30
+ssize_t columns = 60;
+Quantum *pixel_cache = image.getPixels(20,30,columns,40);
+// Set pixel at column 5, and row 10 in the pixel cache to red.
+ssize_t column = 5;
+ssize_t row = 10;
+Quantum *pixel = pixel_cache+row*columns+column;
+*pixel = Color("red");
+// Save changes to underlying image .
+image.syncPixels();
+ // Save updated image to file.
+image.write("horse.png");
+</pre>
+<p>The image cache supports the following methods: <br />
+ </p>
+<table border="1" width="100%">
+ <caption>Image Cache Methods</caption> <tbody>
+ <tr>
+ <td>
+ <center><b>Method</b></center>
+ </td>
+ <td>
+ <center><b>Returns</b></center>
+ </td>
+ <td>
+ <center><b>Signature</b></center>
+ </td>
+ <td>
+ <center><b>Description</b></center>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="getConstPixels"></a> <font size="-1">getConstPixels</font></center>
+ </td>
+ <td><font size="-1">const <a href="http://www.imagemagick.org/Magick++/Quantum.html">Quantum</a>
+*</font></td>
+ <td><font size="-1">const ssize_t x_, const ssize_t y_, const size_t
+columns_, const size_t rows_</font></td>
+ <td><font size="-1">Transfers pixels from the image to the pixel
+cache as defined by the specified rectangular region. </font><font
+ size="-1">The returned pointer remains valid until the next getPixel,
+getConstPixels, or setPixels call and should never be deallocated by
+the
+user.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="getConstIndexes"></a> <font size="-1">getConstIndexes</font></center>
+ </td>
+ <td><font size="-1">const IndexPacket*</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Returns a pointer to the Image pixel indexes
+corresponding to a previous </font><font size="-1">getPixel,
+getConstPixels, or setPixels call.  </font><font size="-1">The
+returned pointer remains valid until the next getPixel, getConstPixels,
+or setPixels call and should never be deallocated by the user.</font><font
+ size="-1"> Only valid for PseudoClass images or CMYKA images. The
+pixel indexes represent an array of type IndexPacket, with each entry
+corresponding to an x,y pixel position. For PseudoClass images, the
+entry's value is the offset into the colormap (see <a href="Image++.html#colorMap">colorMap</a>
+) for that pixel. For CMYKA images, the indexes are used to contain the
+alpha channel.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="getIndexes"></a> <font size="-1">getIndexes</font></center>
+ </td>
+ <td><font size="-1">IndexPacket*</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Returns a pointer to the Image pixel indexes
+corresponding to the pixel region requested by the last <a
+ href="Image++.html#getConstPixels">getConstPixels</a> , <a href="Image++.html#getPixels">getPixels</a>
+, or <a href="Image++.html#setPixels">setPixels</a> call. </font><font
+ size="-1">The
+returned pointer remains valid until the next getPixel, getConstPixels,
+or setPixels call and should never be deallocated by the user.</font><font
+ size="-1"> </font><font size="-1">Only valid for PseudoClass images
+or
+CMYKA images. The pixel indexes represent an array of type
+IndexPacket, with each entry corresponding to a pixel x,y position. For
+PseudoClass images, the entry's value is the offset into the colormap
+(see <a href="Image++.html#colorMap">colorMap</a> ) for that pixel. For
+CMYKA
+images, the indexes are used to contain the alpha channel.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="getPixels"></a> <font size="-1">getPixels</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Quantum.html">Quantum</a> *</font></td>
+ <td><font size="-1">const ssize_t x_, const ssize_t y_, const size_t
+columns_, const size_t rows_</font></td>
+ <td><font size="-1">Transfers pixels from the image to the pixel
+cache as defined by the specified rectangular region. Modified pixels
+may be subsequently transferred back to the image via syncPixels. </font><font
+ size="-1">The returned pointer remains valid until the next getPixel,
+getConstPixels, or setPixels call and should never be deallocated by
+the
+user.</font><font size="-1"></font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="setPixels"></a> <font size="-1">setPixels</font></center>
+ </td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Quantum.html">Quantum</a> *</font></td>
+ <td><font size="-1">const ssize_t x_, const ssize_t y_, const size_t
+columns_, const size_t rows_</font></td>
+ <td><font size="-1">Allocates a pixel cache region to store image
+pixels as defined by the region rectangle.  This area is
+subsequently transferred from the pixel cache to the image via
+syncPixels. </font><font size="-1">The returned pointer remains
+valid until the next getPixel, getConstPixels, or setPixels call and
+should never be deallocated by the user.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="syncPixels"></a> <font size="-1">syncPixels</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Transfers the image cache pixels to the image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="readPixels"></a> <font size="-1">readPixels</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#QuantumTypes">QuantumTypes</a>
+quantum_, unsigned char *source_,</font></td>
+ <td><font size="-1">Transfers one or more pixel components from a
+buffer or file into the image pixel cache of an image. ReadPixels is
+typically used to support image decoders. The region transferred
+corresponds to the region set by a preceding setPixels call.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="writePixels"></a> <font size="-1">writePixels</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1"><a href="http://www.imagemagick.org/Magick++/Enumerations.html#QuantumTypes">QuantumTypes</a>
+quantum_, unsigned char *destination_</font></td>
+ <td><font size="-1">Transfers one or more pixel components from
+the image pixel cache to a buffer or file. WritePixels is typically
+used to support image encoders. The region transferred corresponds to
+the region set by a preceding getPixels or getConstPixels call.</font></td>
+ </tr>
+ </tbody>
+</table>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Design Principles</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<center>
+<h1>Magick::Image Data Structures</h1></center>
+The class Magick::Image is a simple handle which points to a reference-counted image representation. This allows multiple Magick::Image instances to share the same image and attributes. At the point in time that the image data, or image attributes are modified and the current reference count is greater than one, the image data and attributes are copied to create a new image with a reference count of one and the reference count on the old image is decremented. If the reference count on the old image becomes zero, then the associated reference and data are deleted. This strategy represents a simple (but effective) form of garbage collection
+<p><img src="Image.png" height="490" width="910" /></p>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Install Magick++</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Installing Magick++</h1>
+<h3>General</h3>
+<p>In order to compile Magick++ you must have access to a standard C++ implementation. The author uses <a href="http://gcc.gnu.org/index.html">gcc 3.4 (GNU C++)</a> which is available under UNIX and under the <a href="http://www.cygwin.com/">Cygwin UNIX-emulation environment</a> for Windows. Standards compliant commercial C++ compilers should also work fine. Most modern C++ compilers for Microsoft Windows or the Mac should work (project files are provided for Microsoft Visual C++ 8.0).</p>
+<p>It was decided that Magick++ will be around for the long-haul, so its API definition depends on valuable C++ features which should be common in all current and future C++ compilers. The compiler must support the following C++ standard features:</p>
+<ul>
+<li>
+<p style="margin-bottom: 0cm">templates</p></li>
+<li>
+<p style="margin-bottom: 0cm">static constructors</p></li>
+<li>
+<p style="margin-bottom: 0cm">C++-style casts (e.g. static_cast)</p></li>
+<li>
+<p style="margin-bottom: 0cm">bool type</p></li>
+<li>
+<p style="margin-bottom: 0cm">string class (<tt><string></tt>)</p></li>
+<li>
+<p style="margin-bottom: 0cm">exceptions (<tt><exception></tt>)</p></li>
+<li>
+<p style="margin-bottom: 0cm">namespaces</p></li>
+<li>
+<p>Standard Template Library (STL) (e.g. <tt><list></tt>, <tt><vector></tt>)</p></li></ul>
+<p style="margin-bottom: 0cm">The author has personally verified that Magick++ compiles and runs using the following compiler/platform combinations:</p>
+<br />
+<p align="center" style="margin-bottom: 0cm"><b>Tested Configurations</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+<tr>
+<td>
+<p align="center"><b>Operating System</b></p></td>
+<td>
+<p align="center"><b>Architecture</b></p></td>
+<td>
+<p align="center"><b>Compiler</b></p></td></tr>
+<tr>
+<td>
+<p><font size="2">SunOS 5.6, 5.7, 5.8 ("Solaris 2.6, 7, & 8)</font></p></td>
+<td>
+<p><font size="2">SPARC</font></p></td>
+<td>
+<p><font size="2">GCC 3.0.4</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">SunOS 5.7 ("Solaris 7")</font></p></td>
+<td>
+<p><font size="2">SPARC</font></p></td>
+<td>
+<p><font size="2">Sun Workshop 5.0 C++</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">SunOS 5.8 ("Solaris 8")</font></p></td>
+<td>
+<p><font size="2">SPARC</font></p></td>
+<td>
+<p><font size="2">Sun WorkShop 6 update 2 C++ 5.3</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">FreeBSD 4.0</font></p></td>
+<td>
+<p><font size="2">Intel Pentium II</font></p></td>
+<td>
+<p><font size="2">GCC 2.95</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">Windows NT 4.0 SP6a</font></p></td>
+<td>
+<p><font size="2">Intel Pentium II</font></p></td>
+<td>
+<p><font size="2">Visual C++ 8.0 Standard Edition</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">Windows XP</font></p></td>
+<td>
+<p><font size="2">Intel Pentium IV</font></p></td>
+<td>
+<p><font size="2">Visual C++ 8.0 Standard Edition Service Pack 5</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">Windows '98 + <a href="http://www.cygwin.com/">Cygwin</a> 1.3.10</font></p></td>
+<td>
+<p><font size="2">Intel Pentium III</font></p></td>
+<td>
+<p><font size="2">GCC 2.95.3-5</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">Windows NT 4.0 SP6a</font></p></td>
+<td>
+<p><font size="2">Intel Pentium II</font></p></td>
+<td>
+<p><font size="2">GCC 2.95.3-5</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">Windows XP + <a href="http://www.cygwin.com/">Cygwin</a> 1.3.10</font></p></td>
+<td>
+<p><font size="2">Intel Pentium IV</font></p></td>
+<td>
+<p><font size="2">GCC 2.95.3-5</font></p></td></tr></table>
+<p style="margin-bottom: 0cm">Users of Magick++ have reported that the following configurations work with Magick++:</p>
+<br />
+<p align="center" style="margin-bottom: 0cm"><b>Other Known Working Configurations</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="2">
+<tr>
+<td>
+<p align="center"><b>Operating System</b></p></td>
+<td>
+<p align="center"><b>Architecture</b></p></td>
+<td>
+<p align="center"><b>Compiler</b></p></td>
+<td>
+<p><b>Reported By</b></p></td></tr>
+<tr valign="top">
+<td>
+<p><font size="2">Red Hat Linux 8.0</font></p></td>
+<td>
+<p><font size="2">i386 & alpha</font></p></td>
+<td>
+<p><font size="2">EGCS 1.1.2</font></p></td>
+<td>
+<p><font size="2">Dr. Alexander Zimmermann <Alexander.Zimmermann@fmi.uni-passau.de></font></p></td></tr>
+<tr valign="top">
+<td>
+<p><font size="2">Red Hat Linux 7.0</font></p></td>
+<td>
+<p><font size="2">i386</font></p></td>
+<td>
+<p><font size="2">GCC 2.95.2</font></p></td>
+<td>
+<p><font size="2">Dr. Alexander Zimmermann <Alexander.Zimmermann@fmi.uni-passau.de></font></p></td></tr>
+<tr valign="top">
+<td>
+<p><font size="2">Red Hat Linux 7.0</font></p></td>
+<td>
+<p><font size="2">i386</font></p></td>
+<td>
+<p><font size="2">GCC "2.96" snapshot</font></p></td>
+<td>
+<p><font size="2">???</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">Red Hat Linux 7.X</font></p></td>
+<td>
+<p><font size="2">i386 & alpha</font></p></td>
+<td>
+<p><font size="2">GCC 3.0</font></p></td>
+<td>
+<p><font size="2">Dr. Alexander Zimmermann <Alexander.Zimmermann@fmi.uni-passau.de></font></p></td></tr>
+<tr valign="top">
+<td>
+<p><font size="2">SGI IRIX 6.2, 6.5</font></p></td>
+<td>
+<p><font size="2">MIPS</font></p></td>
+<td>
+<p><font size="2">IRIX C++ 7.3.1.2m</font></p></td>
+<td>
+<p><font size="2">Albert Chin-A-Young <china@thewrittenword.com></font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">SunOS 5.5.1</font></p></td>
+<td>
+<p><font size="2">SPARC</font></p></td>
+<td>
+<p><font size="2">Sun WorkShop CC 5.0</font></p></td>
+<td>
+<p><font size="2">Albert Chin-A-Young <china@thewrittenword.com></font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">SunOS 5.6, 5.7, 5.8</font></p></td>
+<td>
+<p><font size="2">SPARC</font></p></td>
+<td>
+<p><font size="2">Sun Forte CC 5.3</font></p></td>
+<td>
+<p><font size="2">Albert Chin-A-Young <china@thewrittenword.com></font></p></td></tr>
+<tr valign="top">
+<td>
+<p><font size="2">HP-UX 11.00</font></p></td>
+<td>
+<p><font size="2">PA-RISC</font></p></td>
+<td>
+<p><font size="2">HP-UX aCC A.03.30</font></p></td>
+<td>
+<p><font size="2">Albert Chin-A-Young <china@thewrittenword.com></font></p></td></tr>
+<tr valign="top">
+<td>
+<p><font size="2">Mac OS 9</font></p></td>
+<td>
+<p><font size="2">PowerPC</font></p></td>
+<td>
+<p><font size="2">CodeWarrior Professional Release 6</font></p></td>
+<td>
+<p><font size="2">Leonard Rosenthol <leonardr@digapp.com></font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">Mac OS X 10.1 "Darwin"</font></p></td>
+<td>
+<p><font size="2">PowerPC</font></p></td>
+<td>
+<p><font size="2">GCC 2.95.2 (apple gcc -926)</font></p></td>
+<td>
+<p><font size="2">Cristy</font></p></td></tr></table>
+<p>Please let me know if you have successfully built and executed Magick++ using a different configuration so that I can add to the table of verified configurations.</p>
+<hr />
+<h3 align="center">Unix/Linux</h3>
+<h4>Building From Source</h4>
+<p>Magick++ is now built using the ImageMagick configure script and Makefiles. Please follow the installation instructions provided by its README.txt file. The following instructions pertain to the Magick++ specific configuration and build options.</p>
+<p>To install ImageMagick plus Magick++ under Unix, installation should be similar to</p>
+<p><tt>./configure [ --prefix=/prefix ]</tt><br />
+<tt>make</tt><br />
+<tt>make install</tt></p>
+<p>The library is currently named similar to 'libMagick++.a' (and/or libMagick++.so.5.0.39) and is installed under prefix/lib while the headers are installed with Magick++.h being installed in prefix/include and the remaining headers in prefix/include/Magick++.</p>
+<p>To influence the options the configure script chooses, you may specify 'make' option variables when running the configure script. For example, the command</p>
+<blockquote><tt>./configure CXX=CC CXXFLAGS=-O2 LIBS=-lposix</tt></blockquote>
+<p style="margin-bottom: 0cm"><br />
+specifies additional options to the configure script. The following table shows the available options.</p>
+<br />
+<p align="center" style="margin-bottom: 0cm">Environment Variables That Effect Configure</p>
+<table width="100%" border="1" cellpadding="2" cellspacing="3">
+<col width="40*" />
+<col width="216*" />
+<tr>
+<td width="16%">
+<p align="center"><b>Make Option Variable</b></p></td>
+<td width="84%">
+<p align="center"><b>Description</b></p></td></tr>
+<tr>
+<td width="16%">
+<p align="center">CXX</p></td>
+<td width="84%">
+<p>Name of C++ compiler (e.g. 'CC -Xa') to use compiler 'CC -Xa'</p></td></tr>
+<tr>
+<td width="16%">
+<p align="center">CXXFLAGS</p></td>
+<td width="84%">
+<p>Compiler flags (e.g. '-g -O2') to compile with</p></td></tr>
+<tr>
+<td width="16%">
+<p align="center">CPPFLAGS</p></td>
+<td width="84%">
+<p>Include paths (-I/somedir) to look for header files</p></td></tr>
+<tr>
+<td width="16%">
+<p align="center">LDFLAGS</p></td>
+<td width="84%">
+<p>Library paths (-L/somedir) to look for libraries. Systems that support the notion of a library run-path may additionally require -R/somedir or '-rpath /somedir' in order to find shared libraries at run time.</p></td></tr>
+<tr>
+<td width="16%">
+<p align="center">LIBS</p></td>
+<td width="84%">
+<p>Extra libraries (-lsomelib) required to link</p></td></tr></table>
+<h4>Installing Linux RPMs</h4>
+<p style="margin-bottom: 0cm">Linux RPMs of ImageMagick and Magick++ can be downloaded from <a href="ftp://ftp.imagemagick.org/pub/ImageMagick/linux//">ftp://ftp.imagemagick.org/pub/ImageMagick/linux/</a>.</p>
+<hr />
+<h3 align="center">Windows '9X, NT, 2003, 2008, XP, & Windows 7</h3>
+<h4>Visual C++</h4>
+<p>Windows NT through Windows Vista are supported by the ImageMagick source package for NT available in the 'win2k' subdirectory of the ImageMagick ftp site (and mirrors). The ImageMagick source package for NT provides sources to ImageMagick, Magick++, add-on libraries (e.g. JPEG), and a ready-made Visual C++ 8.0 build environment. Please read the configuration and build instructions in README.txt (under the heading "Windows Win2K/XP VISUAL C++ 8.0 COMPILATION") in order to build Magick++.</p>
+<h4>Cygwin & GCC</h4>
+<p>It is possible to build both ImageMagick and Magick++ under the Cygwin Unix-emulation environment for Windows NT. Obtain and install Cgywin from <a href="http://www.cygwin.com/">http://www.cygwin.com/</a> . An X11R6 environment for Cygwin is available from <a href="http://www.cygwin.com/xfree/">http://www.cygwin.com/xfree/</a> .To build using Cygwin and GCC, follow the instructions for building under Unix.</p>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Montage</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Magick::Montage Class</h1>
+<p>A montage is a single image which is composed of thumbnail images composed in a uniform grid. The size of the montage image is determined by the size of the individual thumbnails and the number of rows and columns in the grid.</p>
+<p>The following illustration shows a montage consisting of three columns and two rows of thumbnails rendered on a gray background:</p>
+<p class="image"><img src="montage-sample-framed.jpg" name="Graphic1" align="bottom" width="378" height="238" border="0"/></p>
+<p>Montages may be either "plain" (undecorated thumbnails) or "framed" (decorated thumbnails). In order to more easily understand the options supplied to <a href="STL.html#montageImages"><i>MontageImages()</i></a>, montage options are supplied by two different classes: <a href="#Magick::Montage"><i>Magick::Montage</i></a> and <a href="#Magick::MontageFramed"><i>Magick::MontageFramed</i></a>.</p>
+<h3 align="center"><a name="PlainMontages"></a>Plain Montages</h3>
+<p><a name="Magick::Montage"></a><i>Magick::Montage</i> is the base class to provide montage options and provides methods to set all options required to render simple (unframed) montages. See <a href="#Magick::MontageFramed"><i>Magick::MontageFramed</i></a>if you would like to create a framed montage.</p>
+<p>Unframed thumbnails consist of four components: the thumbnail image, the thumbnail border, an optional thumbnail shadow, and an optional thumbnail label area.</p>
+<p class="image"><img src="thumbnail-anatomy-plain.jpg" name="Graphic2" align="middle" width="309" height="327" border="0"/></p>
+<p style="margin-bottom: 0cm"> </p>
+<p align="center" style="margin-bottom: 0cm"><b>Montage Methods</b></p>
+<ul><table width="100%" border="1" cellpadding="2" cellspacing="2">
+<tr>
+<td>
+<p align="center"><b>Method</b></p></td>
+<td>
+<p align="center"><b>Return Type</b></p></td>
+<td>
+<p align="center"><b>Signature(s)</b></p></td>
+<td>
+<p align="center"><b>Description</b></p></td></tr>
+<tr>
+<td>
+<p align="center"><font size="2">Montage</font></p></td>
+<td bgcolor="#666666"></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Default constructor</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="backgroundColor"></a><font size="2">backgroundColor</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Color.html">Color</a> &backgroundColor_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the background color that thumbnails are imaged upon.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Color.html"><font size="2">Color</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="compose"></a><font size="2">compose</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2"><a href="Enumerations.html#CompositeOperator">CompositeOperator</a> compose_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the image composition algorithm for thumbnails. This controls the algorithm by which the thumbnail image is placed on the background. Use of OverCompositeOp is recommended for use with images that have transparency. This option may have negative side-effects for images without transparency.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Enumerations.html#CompositeOperator"><font size="2">CompositeOperator</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="fileName"></a><font size="2">fileName</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">std::string fileName_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the image filename to be used for the generated montage images. To handle the case were multiple montage images are generated, a <span lang="en-US">printf</span>-style format may be embedded within the filename. For example, a filename specification of image%02d.miff names the montage images as image00.miff, image01.miff, etc.</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">std::string</font></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="fill"></a>fill</p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Color.html">Color</a> &pen_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the fill color to use for the label text.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Color.html"><font size="2">Color</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="font"></a><font size="2">font</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">std::string font_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the thumbnail label font.</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">std::string</font></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="geometry"></a><font size="2">geometry</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Geometry.html">Geometry</a> &geometry_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the size of the generated thumbnail.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Geometry.html"><font size="2">Geometry</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="gravity"></a><font size="2">gravity</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2"><a href="Enumerations.html#GravityType">GravityType</a> gravity_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the thumbnail positioning within the specified geometry area. If the thumbnail is smaller in any dimension than the geometry, then it is placed according to this specification.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Enumerations.html"><font size="2">GravityType</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="label"></a><font size="2">label</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">std::string label_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the format used for the image label. Special <a href="FormatCharacters.html">format characters</a> may be embedded in the format string to include information about the image.</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">std::string</font></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="penColor"></a><font size="2">penColor</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Color.html">Color</a> &pen_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the pen color to use for the label text (same as <i>fill</i>).</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Color.html"><font size="2">Color</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="pointSize"></a><font size="2">pointSize</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">size_t pointSize_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the thumbnail label font size.</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">size_t</font></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="shadow"></a><font size="2">shadow</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">bool shadow_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Enable/disable drop-shadow on thumbnails.</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">bool</font></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="stroke"></a><font size="2">stroke</font></p></td>
+<td>
+<p>void</p></td>
+<td>
+<p><font size="2">const <a href="Color.html">Color</a> &pen_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the stroke color to use for the label text .</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Color.html"><font size="2">Color</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="texture"></a><font size="2">texture</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">std::string texture_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies a texture image to use as montage background. The built-in textures "<tt>granite:</tt>" and "<tt>plasma:</tt>" are available. A texture is the same as a background image.</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">std::string</font></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="tile"></a><font size="2">tile</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Geometry.html">Geometry</a> &tile_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the maximum number of montage columns and rows in the montage. The montage is built by filling out all cells in a row before advancing to the next row. Once the montage has reached the maximum number of columns and rows, a new montage image is started.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Geometry.html"><font size="2">Geometry</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="transparentColor"></a><font size="2">transparentColor</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Color.html">Color</a> &transparentColor_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies a montage color to set transparent. This option can be set the same as the background color in order for the thumbnails to appear without a background when rendered on an HTML page. For best effect, ensure that the transparent color selected does not occur in the rendered thumbnail colors.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Color.html"><font size="2">Color</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr></table></ul>
+<h3 align="center"><a name="FramedMontages"></a>Framed Montages</h3>
+<p><a name="Magick::MontageFramed"></a><i>Magick::MontageFramed</i> provides the means to specify montage options when it is desired to have decorative frames around the image thumbnails. <i>MontageFramed</i> inherits from <i>Montage</i> and therefore provides all the methods of <i>Montage</i> as well as those shown in the table "MontageFramed Methods".</p>
+<p>Framed thumbnails consist of four components: the thumbnail image, the thumbnail frame, the thumbnail border, an optional thumbnail shadow, and an optional thumbnail label area.</p>
+<p class="image"><img src="thumbnail-anatomy-framed.jpg" name="Graphic3" align="middle" width="350" height="345" border="0" /></p>
+<p style="margin-bottom: 0cm"> </p>
+<p align="center" style="margin-bottom: 0cm"><b>MontageFramed Methods</b></p>
+<ul><table width="100%" border="1" cellpadding="2" cellspacing="2">
+<tr>
+<td>
+<p align="center"><b>Method</b></p></td>
+<td>
+<p align="center"><b>Return Type</b></p></td>
+<td>
+<p align="center"><b>Signature(s)</b></p></td>
+<td>
+<p align="center"><b>Description</b></p></td></tr>
+<tr>
+<td>
+<p align="center"><font size="2">MontageFramed</font></p></td>
+<td bgcolor="#666666"></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Default constructor (enable frame via <i>frameGeometry</i>).</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="borderColor"></a><font size="2">borderColor</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Color.html">Color</a> &borderColor_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the background color within the thumbnail frame.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Color.html"><font size="2">Color</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="borderWidth"></a><font size="2">borderWidth</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">size_t borderWidth_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the border (in pixels) to place between a thumbnail and its surrounding frame. This option only takes effect if thumbnail frames are enabled (via <i>frameGeometry</i>) and the thumbnail geometry specification doesn't also specify the thumbnail border width.</font></p></td></tr>
+<tr>
+<td>
+<p><font size="2">size_t</font></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="frameGeometry"></a><font size="2">frameGeometry</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Geometry.html">Geometry</a> &frame_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the geometry specification for frame to place around thumbnail. If this parameter is not specified, then the montage is unframed.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Geometry.html"><font size="2">Geometry</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr>
+<tr>
+<td rowspan="2">
+<p align="center"><a name="matteColor"></a><font size="2">matteColor</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">const <a href="Color.html">Color</a> &matteColor_</font></p></td>
+<td rowspan="2">
+<p><font size="2">Specifies the thumbnail frame color.</font></p></td></tr>
+<tr>
+<td>
+<p><a href="Color.html"><font size="2">Color</font></a></p></td>
+<td>
+<p><font size="2">void</font></p></td></tr></table></ul>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: PixelPacket</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">PixelPacket Structure</h1>
+<p style="margin-bottom: 0cm">The <i>PixelPacket</i> structure is used to represent pixels in ImageMagick. ImageMagick may be compiled to support 32 or 64 bit pixels. The size of PixelPacket is controlled by the value of the <i>QuantumDepth</i> define. The default is 64 bit pixels, which provide the best accuracy. If memory consumption must be minimized, or processing time must be minimized, then ImageMagick may be compiled with QuantumDepth=8. The following table shows the relationship between <i>QuantumDepth</i>, the type of <i>Quantum</i>, and the overall <i>PixelPacket</i> size.</p>
+<br />
+<p align="center" style="margin-bottom: 0cm"><b>Effect Of QuantumDepth Values</b></p>
+<center>
+<table width="336" border="1" cellpadding="2" cellspacing="3" bgcolor="#CCCCCC">
+<col width="101" />
+<col width="99" />
+<col width="110" />
+<tr>
+<td width="101">
+<p align="center"><b>QuantumDepth</b></p></td>
+<td width="99">
+<p align="center"><b>Quantum Type</b></p></td>
+<td width="110">
+<p align="center"><b>PixelPacket Size</b></p></td></tr>
+<tr>
+<td width="101">
+<p align="center">8</p></td>
+<td width="99">
+<p align="center">unsigned char</p></td>
+<td width="110">
+<p align="center">32 bits</p></td></tr>
+<tr>
+<td width="101">
+<p align="center">16</p></td>
+<td width="99">
+<p align="center">unsigned short</p></td>
+<td width="110">
+<p align="center">64 bits</p></td></tr></table></center>
+<p style="margin-bottom: 0cm">The members of the <i>PixelPacket</i> structure, and their interpretation, are shown in the following table:</p>
+<br />
+<p align="center" style="margin-bottom: 0cm"><b>PixelPacket Structure Members</b></p>
+<center>
+<table width="523" border="1" cellpadding="2" cellspacing="3" bgcolor="#CCCCCC">
+<col width="58" />
+<col width="50" />
+<col width="102" />
+<col width="152" />
+<col width="119" />
+<tr>
+<td rowspan="2" width="58">
+<p align="center"><b>Member</b></p></td>
+<td rowspan="2" width="50">
+<p align="center"><b>Type</b></p></td>
+<td colspan="3" width="388">
+<p align="center"><b>Interpretation</b></p></td></tr>
+<tr>
+<td width="102">
+<p align="center"><a href="Enumerations.html#ColorspaceType">RGBColorspace</a></p></td>
+<td width="152">
+<p align="center"><a href="Enumerations.html#ColorspaceType">RGBColorspace</a> + <a href="Image++.html#matte">matte</a></p></td>
+<td width="119">
+<p align="center"><a href="Enumerations.html#ColorspaceType">CMYKColorspace</a></p></td></tr>
+<tr>
+<td width="58">
+<p><font size="2">red</font></p></td>
+<td width="50">
+<p><font size="2">Quantum</font></p></td>
+<td width="102">
+<p><font size="2">Red</font></p></td>
+<td width="152">
+<p><font size="2">Red</font></p></td>
+<td width="119">
+<p><font size="2">Cyan</font></p></td></tr>
+<tr>
+<td width="58">
+<p><font size="2">green</font></p></td>
+<td width="50">
+<p><font size="2">Quantum</font></p></td>
+<td width="102">
+<p><font size="2">Green</font></p></td>
+<td width="152">
+<p><font size="2">Green</font></p></td>
+<td width="119">
+<p><font size="2">Magenta</font></p></td></tr>
+<tr>
+<td width="58">
+<p><font size="2">blue</font></p></td>
+<td width="50">
+<p><font size="2">Quantum</font></p></td>
+<td width="102">
+<p><font size="2">Blue</font></p></td>
+<td width="152">
+<p><font size="2">Blue</font></p></td>
+<td width="119">
+<p><font size="2">Yellow</font></p></td></tr>
+<tr>
+<td width="58">
+<p><font size="2">opacity</font></p></td>
+<td width="50">
+<p><font size="2">Quantum</font></p></td>
+<td width="102">
+<p><font size="2">Ignored</font></p></td>
+<td width="152">
+<p><font size="2">Opacity</font></p></td>
+<td width="119">
+<p><font size="2">Ignored</font></p></td></tr></table></center>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Working with Pixels </title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Magick::Pixels</h1>
+<p>The <i>Pixels</i> class provides efficient access to raw image
+pixels. Image pixels (of type <a href="Quantum.html"><i>Quantum</i></a>)
+may be accessed directly via the <i>Image Pixel Cache</i>. The image
+pixel cache is a rectangular window (a view) into the actual image
+pixels (which may be in memory, memory-mapped from a disk file, or
+entirely on disk). Obtain existing image pixels via <i>get()</i>.
+Create a new pixel region using <i>set().</i> </p>
+<p>Depending on the capabilities of the operating system, and the
+relationship of the window to the image, the pixel cache may be a copy
+of the pixels in the selected window, or it may be the actual image
+pixels. In any case calling <i>sync()</i> insures that the base image
+is updated with the contents of the modified pixel cache. The method <i>decode()</i>supports
+copying foreign pixel data formats into the pixel cache according to
+the <i>QuantumTypes</i>. The method <i>encode()</i> supports copying
+the pixels in the cache to a foreign pixel representation according to
+the format specified by <i>QuantumTypes</i>. </p>
+<p>Setting a view using the Pixels class does not cause the number of
+references to the underlying image to be reduced to one. Therefore, in
+order to ensure that only the current generation of the image is
+modified, the Image's <a href="Image++.html#modifyImage">modifyImage()</a>
+method should be invoked to reduce the reference count on the underlying
+image to one. If this is not done, then it is possible for a previous
+generation of the image to be modified due to the use of reference
+counting when copying or constructing an Image. </p>
+<p>The <i>Quantum</i>* returned by the <i>set</i> and <i>get</i>
+methods, and the <i>void</i>* returned by the <i>indexes</i>
+method point to pixel data managed by the <i>Pixels</i> class. The <i>Pixels</i>
+class is responsible for releasing resources associated with the pixel
+view. This means that the pointer should never be passed to delete() or
+free(). </p>
+<p style="margin-bottom: 0cm;">The pixel view is a small image in which
+the pixels may be accessed, addressed, and updated, as shown in the
+following example, which produces an image similar to the one on the
+right (minus lines and text): </p>
+<p class="image"><img class="icon" src="Cache.png" name="Graphic1" align="bottom" width="254" border="0" /></p>
+<div class="viewport">
+#include <Magick++.h>
+#include <iostream>
+
+using namespace std;
+using namespace Magick;
+int main(int argc,char **argv)
+{
+ InitializeMagick(*argv);
+
+ // Create base image
+ Image image(Geometry(254,218), "white");
+
+
+ // Set the image type to TrueColor DirectClass representation.
+ image.type(TrueColorType);
+ // Ensure that there is only one reference to underlying image
+ // If this is not done, then image pixels will not be modified.
+ image.modifyImage();
+
+ // Allocate pixel view
+ Pixels view(image);
+
+ // Set all pixels in region anchored at 38x36, with size 160x230 to green.
+ size_t columns = 196; size_t rows = 162;
+ Color green("green");
+ Quantum *pixels = view.get(38,36,columns,rows);
+ for ( ssize_t row = 0; row < rows ; ++row )
+ for ( ssize_t column = 0; column < columns ; ++column )
+ {
+ *pixels++=QuantumRange*green.quantumRed();
+ *pixels++=QuantumRange*green.quantumGreen();
+ *pixels++=QuantumRange*green.quantumBlue();
+ }
+
+ // Save changes to image.
+ view.sync();
+
+ // Set all pixels in region anchored at 86x72, with size 108x67 to yellow.
+ columns = 108; rows = 67;
+ Color yellow("yellow");
+ pixels = view.get(86,72,columns,rows);
+ for ( ssize_t row = 0; row < rows ; ++row )
+ for ( ssize_t column = 0; column < columns ; ++column )
+ {
+ *pixels++=QuantumRange*yellow.quantumRed();
+ *pixels++=QuantumRange*yellow.quantumGreen();
+ *pixels++=QuantumRange*yellow.quantumBlue();
+ }
+ view.sync();
+
+ // Set pixel at position 108,94 to red
+ Color red("red");
+ pixels = view.get(108,94,1,1);
+ *pixels++=QuantumRange*red.quantumRed();
+ *pixels++=QuantumRange*red.quantumGreen();
+ *pixels++=QuantumRange*red.quantumBlue();
+
+ // Save changes to image.
+ view.sync();
+ image.write( "logo.png" );
+}
+</div>
+<p style="margin-bottom: 0cm;"><i>Pixels</i> supports the following
+methods: </p>
+<p align="center" style="margin-bottom: 0cm;"><b>Pixel Cache Methods</b></p>
+<table width="100%" border="1" cellpadding="2" cellspacing="2">
+ <tbody>
+ <tr>
+ <td>
+ <p align="center"><b>Method</b></p>
+ </td>
+ <td>
+ <p align="center"><b>Returns</b></p>
+ </td>
+ <td>
+ <p align="center"><b>Signature</b></p>
+ </td>
+ <td>
+ <p align="center"><b>Description</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="get"></a><font size="2">get</font></p>
+ </td>
+ <td>
+ <p><font size="2"><a href="Quantum.html">Quantum</a>*</font></p>
+ </td>
+ <td>
+ <p><font size="2">const ssize_t x_, const ssize_t y_, const size_t
+columns_, const size_t rows_</font></p>
+ </td>
+ <td>
+ <p><font size="2">Transfers read-write pixels from the image to
+the pixel cache as defined by the specified rectangular region.
+ Modified pixels may be subsequently transferred back to the image
+ via <i>sync</i>. The value returned is intended for pixel access
+ only. It should never be deallocated.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="getConst"></a><font size="2">getConst</font></p>
+ </td>
+ <td>
+ <p><font size="2">const <a href="Quantum.html">Quantum</a>*</font></p>
+ </td>
+ <td>
+ <p><font size="2">const ssize_t x_, const ssize_t y_, const size_t
+ columns_, const size_t rows_</font></p>
+ </td>
+ <td>
+ <p><font size="2">Transfers read-only pixels from the image to
+the pixel cache as defined by the specified rectangular region.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="set"></a><font size="2">set</font></p>
+ </td>
+ <td>
+ <p><font size="2"><a href="Quantum.html">Quantum</a>*</font></p>
+ </td>
+ <td>
+ <p><font size="2">const ssize_t x_, const ssize_t y_, const size_t
+ columns_, const size_t rows_</font></p>
+ </td>
+ <td>
+ <p><font size="2">Allocates a pixel cache region to store image
+ pixels as defined by the region rectangle. This area is
+ subsequently transferred from the pixel cache to the image via <i>sync</i>.
+The value returned is intended for pixel access only. It should
+never be deallocated.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="sync"></a><font size="2">sync</font></p>
+ </td>
+ <td>
+ <p><font size="2">void</font></p>
+ </td>
+ <td>
+ <p><font size="2">void</font></p>
+ </td>
+ <td>
+ <p><font size="2">Transfers the image cache pixels to the image.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="indexes"></a><font size="2">indexes</font></p>
+ </td>
+ <td>
+ <p><font size="2">void*</font></p>
+ </td>
+ <td>
+ <p><font size="2">void</font></p>
+ </td>
+ <td>
+ <p><font size="2">Returns the PsuedoColor pixel indexes
+ corresponding to the pixel region defined by the last <a href="#get">get</a>
+ , <a href="#getConst">getConst</a>, or <a href="#set">set</a>
+ call. Only valid for PseudoColor and CMYKA images. The pixel
+ indexes (an array of type <i>void</i>, which is typedef <i>Quantum</i>,
+which is itself typedef <i>unsigned char</i>, or <i>unsigned short</i>,
+depending on the value of the <i>QuantumDepth </i>define) provide
+the <span lang="en-US">colormap</span> index (see <a
+ href="Image++.html#colorMap">colorMap</a>) for each pixel in the
+image. For CMYKA images, the indexes represent the black
+channel. The value returned is intended for pixel access only. It
+should never be deallocated.</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="x"></a><font size="2">x</font></p>
+ </td>
+ <td>
+ <p><font size="2">int</font></p>
+ </td>
+ <td>
+ <p><font size="2">void</font></p>
+ </td>
+ <td>
+ <p><font size="2">Left ordinate of view</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="y"></a><font size="2">y</font></p>
+ </td>
+ <td>
+ <p><font size="2">int</font></p>
+ </td>
+ <td>
+ <p><font size="2">void</font></p>
+ </td>
+ <td>
+ <p><font size="2">Top ordinate of view</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="columns"></a><font size="2">columns</font></p>
+ </td>
+ <td>
+ <p><font size="2">size_t</font></p>
+ </td>
+ <td>
+ <p><font size="2">void</font></p>
+ </td>
+ <td>
+ <p><font size="2">Width of view</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p align="center"><a name="rows"></a><font size="2">rows</font></p>
+ </td>
+ <td>
+ <p><font size="2">size_t</font></p>
+ </td>
+ <td>
+ <p><font size="2">void</font></p>
+ </td>
+ <td>
+ <p><font size="2">Height of view</font></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Quantum</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Quantum Structure</h1>
+<p style="margin-bottom: 0cm">The <i>Quantum</i> structure is used to represent pixels in ImageMagick. ImageMagick may be compiled to support 32 or 64 bit pixels. The size of Quantum is controlled by the value of the <i>QuantumDepth</i> define. The default is 64 bit pixels, which provide the best accuracy. If memory consumption must be minimized, or processing time must be minimized, then ImageMagick may be compiled with QuantumDepth=8. The following table shows the relationship between <i>QuantumDepth</i>, the type of <i>Quantum</i>, and the overall <i>Quantum</i> size.</p>
+<br />
+<p align="center" style="margin-bottom: 0cm"><b>Effect Of QuantumDepth Values</b></p>
+<center>
+<table width="336" border="1" cellpadding="2" cellspacing="3" bgcolor="#CCCCCC">
+<col width="101" />
+<col width="99" />
+<col width="110" />
+<tr>
+<td width="101">
+<p align="center"><b>QuantumDepth</b></p></td>
+<td width="99">
+<p align="center"><b>Quantum Type</b></p></td>
+<td width="110">
+<p align="center"><b>Quantum Size</b></p></td></tr>
+<tr>
+<td width="101">
+<p align="center">8</p></td>
+<td width="99">
+<p align="center">unsigned char</p></td>
+<td width="110">
+<p align="center">32 bits</p></td></tr>
+<tr>
+<td width="101">
+<p align="center">16</p></td>
+<td width="99">
+<p align="center">unsigned short</p></td>
+<td width="110">
+<p align="center">64 bits</p></td></tr></table></center>
+<p style="margin-bottom: 0cm">The members of the <i>Quantum</i> structure, and their interpretation, are shown in the following table:</p>
+<br />
+<p align="center" style="margin-bottom: 0cm"><b>Quantum Pixel Layout</b></p>
+<center>
+<table width="523" border="1" cellpadding="2" cellspacing="3" bgcolor="#CCCCCC">
+<col width="58" />
+<col width="50" />
+<col width="102" />
+<col width="152" />
+<col width="119" />
+<tr>
+<td rowspan="2" width="58">
+<p align="center"><b>Member</b></p></td>
+<td rowspan="2" width="50">
+<p align="center"><b>Type</b></p></td>
+<td colspan="3" width="388">
+<p align="center"><b>Interpretation</b></p></td></tr>
+<tr>
+<td width="102">
+<p align="center"><a href="Enumerations.html#ColorspaceType">RGBColorspace</a></p></td>
+<td width="152">
+<p align="center"><a href="Enumerations.html#ColorspaceType">RGBColorspace</a> + <a href="Image++.html#matte">matte</a></p></td>
+<td width="119">
+<p align="center"><a href="Enumerations.html#ColorspaceType">CMYKColorspace</a></p></td></tr>
+<tr>
+<td width="58">
+<p><font size="2">red</font></p></td>
+<td width="50">
+<p><font size="2">Quantum</font></p></td>
+<td width="102">
+<p><font size="2">Red</font></p></td>
+<td width="152">
+<p><font size="2">Red</font></p></td>
+<td width="119">
+<p><font size="2">Cyan</font></p></td></tr>
+<tr>
+<td width="58">
+<p><font size="2">green</font></p></td>
+<td width="50">
+<p><font size="2">Quantum</font></p></td>
+<td width="102">
+<p><font size="2">Green</font></p></td>
+<td width="152">
+<p><font size="2">Green</font></p></td>
+<td width="119">
+<p><font size="2">Magenta</font></p></td></tr>
+<tr>
+<td width="58">
+<p><font size="2">blue</font></p></td>
+<td width="50">
+<p><font size="2">Quantum</font></p></td>
+<td width="102">
+<p><font size="2">Blue</font></p></td>
+<td width="152">
+<p><font size="2">Blue</font></p></td>
+<td width="119">
+<p><font size="2">Yellow</font></p></td></tr>
+<tr>
+<td width="58">
+<p><font size="2">opacity</font></p></td>
+<td width="50">
+<p><font size="2">Quantum</font></p></td>
+<td width="102">
+<p><font size="2">Ignored</font></p></td>
+<td width="152">
+<p><font size="2">Opacity</font></p></td>
+<td width="119">
+<p><font size="2">Ignored</font></p></td></tr></table></center>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: STL Templates</title>
+<link rel="stylesheet" href="https://www.imagemagick.org/Magick++/magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1> Magick++ STL Support</h1>
+Magick++ provides a set of <a href="http://www.sgi.com/tech/stl/">Standard
+Template Libary</a> (<a href="http://www.sgi.com/tech/stl/">STL</a> )
+algorithms for operating across ranges of image frames in a container.
+It also provides a set of STL unary function objects to apply an
+operation on image frames in a container via an algorithm which uses
+unary function objects. A good example of a standard algorithm which is
+useful for processing containers of image frames is the STL <i><a
+ href="http://www.sgi.com/tech/stl/for_each.html"> for_each</a> </i>
+algorithm which invokes a unary function object on a range of container
+elements.
+<p>Magick++ uses a limited set of template argument types. The current
+template argument types are: </p>
+<a href="http://www.sgi.com/tech/stl/Container.html">Container</a>
+<blockquote>A container having the properties of a <a
+ href="http://www.sgi.com/tech/stl/BackInsertionSequence.html"> Back
+Insertion Sequence</a> . Sequences support forward iterators and Back
+Insertion Sequences support the additional abilty to append an element
+via push_back(). Common compatable container types are the STL <<a
+ href="http://www.sgi.com/tech/stl/Vector.html"> vector</a> > and <<a
+ href="http://www.sgi.com/tech/stl/List.html">list</a> > template
+containers. This template argument is usually used to represent an
+output container in which one or more image frames may be appended.
+Containers like STL <<a href="http://www.sgi.com/tech/stl/Vector.html">vector</a>
+> which have a given default <i>capacity</i> may need to have their <i>
+capacity</i> adjusted via r<i>eserve() </i>to a larger <i>capacity</i>
+in order to support the expected final <i>size</i> . Since Magick++
+images are very small, it is likely that the default capacity of STL <<a
+ href="http://www.sgi.com/tech/stl/Vector.html"> vector</a> > is
+sufficient for most situations.</blockquote>
+ <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+ <blockquote>An input iterator used to express a position in a
+container. These template arguments are typically used to represent a
+range of elements with f<i>irst_</i> representing the first element to
+be processed and <i> last_</i> representing the element to stop at. When
+processing the entire contents of a container, it is handy to know that
+STL containers usually provide the begin() and end() methods to return
+input interators which correspond with the first and last elements,
+respectively.</blockquote>
+<p>The following is an example of how frames from a GIF animation <font
+ color="#000000"> "test_image_anim.gif" may be appended horizontally
+with the resulting image written to the file <kbd>appended_image.miff</kbd>:</font></p>
+<pre class="code">
+#include <list>
+#include <Magick++.h>
+using namespace std;
+using namespace Magick;
+
+int main(int /*argc*/,char **/*argv*/)
+{
+ list<Image> imageList;
+ readImages( &imageList, "test_image_anim.gif" );
+
+ Image appended;
+ appendImages( &appended, imageList.begin(), imageList.end() );
+ appended.write( "appended_image.miff" );
+ return 0;
+}
+</pre>
+<p>The available Magick++ specific STL algorithms for operating on
+sequences of image frames are shown in the following table: <br />
+ 
+<ul><table border="1" width="100%">
+ <caption><b>Magick++ STL Algorithms For Image Sequences</b></caption> <tbody>
+ <tr>
+ <td>
+ <center><b>Algorithm</b></center>
+ </td>
+ <td>
+ <center><b>Signature</b></center>
+ </td>
+ <td>
+ <center><b>Description</b></center>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="animateImages"></a> <font size="-1">animateImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_</font></td>
+ <td><font size="-1">Animate a sequence of image frames. Image
+frames are displayed in succession, creating an animated effect. The
+animation options are taken from the first image frame. This feature is
+only supported under X11 at the moment.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="appendImages"></a> <font size="-1">appendImages</font></center>
+ </td>
+ <td><font size="-1"><a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+*appendedImage_, <a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_, bool stack_ = false</font></td>
+ <td><font size="-1">Append a sequence of image frames, writing
+the result to <i>appendedImage_.</i> All the input image frames must
+have the same width or height. Image frames of the same width are
+stacked top-to-bottom. Image frames of the same height are stacked
+left-to-right. If the <i>stack_</i> parameter is false, rectangular
+image frames are stacked left-to-right otherwise top-to-bottom.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="averageImages"></a> <font size="-1">averageImages</font></center>
+ </td>
+ <td><font size="-1"><a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+*averagedImage_, <a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_</font></td>
+ <td><font size="-1">Average a sequence of image frames, writing
+the result to <i>averagedImage_</i>. All the input image frames must
+be the same size in pixels.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="coalesceImages"></a> <font size="-1">coalesceImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/Container.html"> Container</a>
+*coalescedImages_, <a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_</font><br />
+ </td>
+ <td><font size="-1">Create a coalesced image sequence obtained by
+"playing" the image sequence (observing page offsets and disposal
+methods) to create a new image sequence in which all frames are full
+size and completely rendered. Note that if the original image sequence
+relied on page offsets and disposal methods that the resulting sequence
+will be larger (perhaps much larger) then the original. This is useful
+for GIF animation sequences that have page offsets and disposal methods.
+The resuting image sequence is returned via <i>coalescedImages_.</i></font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="deconstructImages"></a> <font size="-1">deconstructImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/Container.html"> Container</a>
+*deconstructedImages_, <a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_</font></td>
+ <td><font size="-1">Break down an image sequence into constituent
+parts.  This is useful for creating GIF or MNG animation sequences.
+The input sequence is specified by <i>first_</i> and <i>last_</i>, and
+the deconstructed images are returned via <i>deconstructedImages_</i>.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="displayImages"></a> <font size="-1">displayImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_</font></td>
+ <td><font size="-1">Display a sequence of image frames. Through
+use of a pop-up menu, image frames may be selected in succession. This
+feature is fully supported under X11 but may have only limited support
+in other environments.</font> <br />
+ <font size="-1"><b><font color="#ff0000">Caution: </font></b> if
+an image format is is not compatable with the display visual (e.g. JPEG
+on a colormapped display) then the original image will be altered. Use a
+copy of the original if this is a problem.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="flattenImages"></a> <font size="-1">flattenImages</font></center>
+ </td>
+ <td><font size="-1"><a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+*flattendImage_, <a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_</font></td>
+ <td><font size="-1">Merge a sequence of image frames which
+represent image layers into a single composited representation. The <i>flattendImage_</i>
+parameter points to an existing Image to update with the flattened
+image. This function is useful for combining Photoshop layers into a
+single image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="forwardFourierTransformImage"></a> <font size="-1">forwardFourierTransformImage</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/Container.html"> Container</a>
+*fourierImages_, const Image &image_ </font></td>
+ <td><font size="-1"> Implements the discrete Fourier transform (DFT) of the image as a magnitude / phase image pair via <i>fourierImages_</i>.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="forwardFourierTransformImage"></a> <font size="-1">forwardFourierTransformImage</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/Container.html"> Container</a>
+*fourierImages_, const Image &image_, const bool magnitude_ </font></td>
+ <td><font size="-1"> Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair via <i>fourierImages_</i>.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="mapImages"></a> <font size="-1">mapImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_, const <a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a> & mapImage_, bool
+dither_,  bool measureError_ = false</font></td>
+ <td><font size="-1">Replace the colors of a sequence of images
+with the closest color from a reference image. Set <i>dither_</i> to <i>true</i>
+to enable dithering.  Set <i>measureError_</i> to <i>true</i> in
+order to evaluate quantization error.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="montageImages"></a> <font size="-1">montageImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/Container.html"> Container</a>
+*montageImages_, <a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_, const <a href="Montage.html">Montage</a> &montageOpts_</font></td>
+ <td><font size="-1">Create a composite image by combining several
+separate image frames. Multiple frames may be generated in the output
+container <i> montageImages_ </i>depending on the tile setting and the
+number of image frames montaged. Montage options are provided via the
+parameter <i>montageOpts_</i> . Options set in the first image frame (<a
+ href="https://www.imagemagick.org/Magick++/Image++.html#backgroundColor"> backgroundColor,</a> <a
+ href="https://www.imagemagick.org/Magick++/Image++.html#borderColor">borderColor</a> , <a
+ href="https://www.imagemagick.org/Magick++/Image++.html#matteColor">matteColor</a> , <a
+ href="https://www.imagemagick.org/Magick++/Image++.html#penColor">penColor,</a> <a href="https://www.imagemagick.org/Magick++/Image++.html#font">font,</a>
+and <a href="https://www.imagemagick.org/Magick++/Image++.html#fontPointsize">fontPointsize</a> ) are also used
+as options by <i>montageImages().</i></font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="morphImages"></a> <font size="-1">morphImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/Container.html"> Container</a>
+*morphedImages_, <a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_, size_t frames_</font></td>
+ <td><font size="-1">Morph a seqence of image frames. This
+algorithm  expands the number of image frames (output to the
+container <i>morphedImages_)</i> by adding the number of intervening
+frames specified by <i>frames_</i> such that the original frames morph
+(blend) into each other when played as an animation.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="mosaicImages"></a> <font size="-1">mosaicImages</font></center>
+ </td>
+ <td><font size="-1"><a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a> *mosaicImage_, <a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_</font></td>
+ <td><font size="-1">Inlay a number of images to form a single
+coherent picture. The <i>mosicImage_</i> argument is updated with a
+mosaic constructed from the image sequence represented by <i>first_</i>
+through <i>last_</i> .</font></td>
+ </tr>
+ <tr>
+ <td><center><a name="quantizeImages"></a> <font size="-1">quantizeImages</font></center></td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_, bool measureError_ = false</font></td>
+ <td><font size="-1">Quantize colors in images using current
+quantization settings. Set <i>measureError_</i> to <i>true</i> in order
+to measure quantization error.</font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="readImages"></a> <font size="-1">readImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/Container.html"> Container</a>
+*sequence_, const std::string &imageSpec_</font></td>
+ <td><font size="-1">Read a sequence of image frames into existing
+container (appending to container <i>sequence_</i>) with image names
+specified in the UTF-8 string <i>imageSpec_</i>.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/Container.html"> Container</a>
+*sequence_, const <a href="Blob.html">Blob</a> &blob_</font></td>
+ <td><font size="-1">Read a sequence of image frames into existing
+container (appending to container sequence_) from <a href="Blob.html">Blob</a>
+blob_.</font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="writeImages"></a> <font size="-1">writeImages</font></center>
+ </td>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_, const std::string &imageSpec_, bool adjoin_ = true</font></td>
+ <td><font size="-1">Write images in container to file specified
+by string <i>imageSpec_</i>. Set <i>adjoin_ </i>to false to write a
+set of image frames via a wildcard <i>imageSpec_ </i>(e.g.
+image%02d.miff).</font> <br />
+The wildcard must be one of <tt>%0Nd, %0No, or %0Nx</tt>. <br />
+ <font size="-1"><b><font color="#ff0000">Caution: </font></b> if
+an image format is selected which is capable of supporting fewer colors
+than the original image or quantization has been requested, the original
+image will be quantized to fewer colors. Use a copy of the original if
+this is a problem.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1"><a
+ href="http://www.sgi.com/tech/stl/InputIterator.html"> InputIterator</a>
+first_, <a href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</a>
+last_, <a href="Blob.html">Blob</a> *blob_, bool adjoin_ = true</font></td>
+ <td><font size="-1">Write images in container to in-memory BLOB
+specified by <a href="Blob.html">Blob</a> blob_. Set adjoin_ to false to
+write a set of image frames via a wildcard imageSpec_ (e.g.
+image%02d.miff).</font> <br />
+ <font size="-1"><b><font color="#ff0000">Caution:</font></b> if an
+image format is selected which is capable of supporting fewer colors
+than the original image or quantization has been requested, the original
+image will be quantized to fewer colors. Use a copy of the original if
+this is a problem.</font></td>
+ </tr>
+ </tbody>
+</table></ul>
+<p>In addition, we support these yet to be documented methods: <code>combineImages()</code>, <code>evaluateImages()</code>, <code>mergeImageLayers()</code>, <code>optimizeImageLayers()</code>, <code>optimizePlusImageLayers()</code>, and <code>separateImages()</code>.</p>
+<br />
+  </p>
+<center>
+<h3> Magick++ Unary Function Objects</h3>
+</center>
+Magick++ unary function objects inherit from the STL unary_function
+template class . The STL unary_function template class is of the form
+<pre class="text"><tt><font color="#000099">unary_function<Arg, Result></font></tt></pre>
+and expects that derived classes implement a method of the form:
+<pre class="text"><tt><font color="#000099">Result operator()( Arg argument_);</font></tt></pre>
+which is invoked by algorithms using the function object. In the case
+of unary function objects defined by Magick++, the invoked function
+looks like:
+<pre class="text"><tt><font color="#000099">void operator()( Image &image_);</font></tt></pre>
+with a typical implementation looking similar to:
+<pre class="text"><tt><font color="#000099">void operator()( Image &image_ )</font></tt> <br />
+ <tt><font color="#000099">  {</font></tt> <br />
+ <tt><font color="#000099">    image_.contrast(
+_sharpen );</font></tt> <br />
+ <tt><font color="#000099">  }</font></tt></pre>
+where <i>contrast</i> is an Image method and <i>_sharpen </i>is an
+argument stored within the function object by its contructor. Since
+constructors may be polymorphic, a given function object may have
+several constructors and selects the appropriate Image method based on
+the arguments supplied.
+<p>In essence, unary function objects (as provided by Magick++) simply
+provide the means to construct an object which caches arguments for
+later use by an algorithm designed for use with unary function objects.
+There is a unary function object corresponding each algorithm provided
+by the <a href="https://www.imagemagick.org/Magick++/Image++.html"> Image</a> class and there is a contructor
+available compatable with each synonymous method in the Image class. </p>
+<p>The unary function objects that Magick++ provides to support
+manipulating images are shown in the following table: <br />
+ 
+<ul><table border="1">
+ <caption><b>Magick++ Unary Function Objects For Image Manipulation</b></caption> <tbody>
+ <tr align="center">
+ <td><b>Function Object</b></td>
+ <td><b>Constructor Signatures(s)</b></td>
+ <td><b>Description</b></td>
+ </tr>
+ <tr>
+ <td valign="middle">
+ <div align="center"><a name="adaptiveThresholdImage"></a> <font
+ size="-1">adaptiveThresholdImage</font><br />
+ </div>
+ </td>
+ <td valign="middle"><font size="-1">size_t width, size_t
+height, unsigned offset = 0</font><br />
+ </td>
+ <td valign="top"><font size="-1">Apply adaptive thresholding to
+the image. Adaptive thresholding is useful if the ideal threshold level
+is not known in advance, or if the illumination gradient is not constant
+across the image. Adaptive thresholding works by evaulating the mean
+(average) of a pixel region (size specified by <i>width</i> and <i>height</i>)
+and using the mean as the thresholding value. In order to remove
+residual noise from the background, the threshold may be adjusted by
+subtracting a constant <i>offset</i> (default zero) from the mean to
+compute the threshold.</font><br />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="addNoiseImage"></a> <font size="-1">addNoiseImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#NoiseType">NoiseType</a>
+noiseType_</font></td>
+ <td><font size="-1">Add noise to image with specified noise type.</font></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: middle;"><small><a
+ name="affineTransformImage"></a>affineTransformImage<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>const DrawableAffine
+&affine_<br />
+ </small></td>
+ <td style="vertical-align: middle;"><small>Transform image by
+specified affine (or free transform) matrix.<br />
+ </small></td>
+ </tr>
+ <tr>
+ <td rowspan="4">
+ <center><a name="annotateImage"></a> <font size="-1">annotateImage</font></center>
+ </td>
+ <td><font size="-1">const std::string &text_, const <a
+ href="Geometry.html"> Geometry</a> &location_</font></td>
+ <td><font size="-1">Annotate with text using specified text,
+bounding area, placement gravity, and rotation. If <i>boundingArea_</i>
+is invalid, then bounding area is entire image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">std::string text_, const <a
+ href="Geometry.html">Geometry</a> &boundingArea_, <a
+ href="Enumerations.html#GravityType">GravityType</a> gravity_</font></td>
+ <td><font size="-1">Annotate using specified text, bounding area,
+and placement gravity. If <i>boundingArea_</i> is invalid, then
+bounding area is entire image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const std::string &text_, const <a
+ href="Geometry.html"> Geometry</a> &boundingArea_, <a
+ href="Enumerations.html#GravityType">GravityType</a> gravity_, double
+degrees_, </font></td>
+ <td><font size="-1">Annotate with text using specified text,
+bounding area, placement gravity, and rotation. If <i>boundingArea_</i>
+is invalid, then bounding area is entire image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const std::string &text_, <a
+ href="Enumerations.html#GravityType"> GravityType</a> gravity_</font></td>
+ <td><font size="-1">Annotate with text (bounding area is entire
+image) and placement gravity.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="blurImage"></a> <font size="-1">blurImage</font></center>
+ </td>
+ <td><font size="-1">const double radius_ = 1, const double sigma_
+= 0.5</font></td>
+ <td><font size="-1">Blur image. The radius_ parameter specifies
+the radius of the Gaussian, in pixels, not counting the center
+pixel.  The sigma_ parameter specifies the standard deviation of
+the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="borderImage"></a> <font size="-1">borderImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_ = "6x6+0+0"</font></td>
+ <td><font size="-1">Border image (add border to image).  The
+color of the border is specified by the <i>borderColor</i> attribute.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="charcoalImage"></a> <font size="-1">charcoalImage</font></center>
+ </td>
+ <td><font size="-1">const double radius_ = 1, const double sigma_
+= 0.5</font></td>
+ <td><font size="-1">Charcoal effect image (looks like charcoal
+sketch). The radius_ parameter specifies the radius of the Gaussian, in
+pixels, not counting the center pixel.  The sigma_ parameter
+specifies the standard deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chopImage"></a> <font size="-1">chopImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Chop image (remove vertical or horizontal
+subregion of image)</font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="colorizeImage"></a> <font size="-1">colorizeImage</font></center>
+ </td>
+ <td><font size="-1">const size_t opacityRed_, const
+size_t opacityGreen_, const size_t opacityBlue_, const Color
+&penColor_</font></td>
+ <td><font size="-1">Colorize image with pen color, using
+specified percent opacity for red, green, and blue quantums.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const size_t opacity_, const <a
+ href="Color.html"> Color</a> &penColor_</font></td>
+ <td><font size="-1">Colorize image with pen color, using
+specified percent opacity.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="commentImage"></a> <font size="-1">commentImage</font></center>
+ </td>
+ <td><font size="-1">const std::string &comment_</font></td>
+ <td><font size="-1">Comment image (add comment string to
+image).  By default, each image is commented with its file name.
+Use  this  method to  assign a specific comment to the
+image.  Optionally you can include the image filename, type, width,
+height, or other  image  attributes by embedding <a
+ href="FormatCharacters.html">special format characters.</a> </font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="compositeImage"></a> <font size="-1">compositeImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+&compositeImage_, ssize_t xOffset_, ssize_t yOffset_, <a
+ href="Enumerations.html#CompositeOperator"> CompositeOperator</a>
+compose_ = <i>InCompositeOp</i></font></td>
+ <td rowspan="2"><font size="-1">Compose an image onto another at
+specified offset and using specified algorithm</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+&compositeImage_, const Geometry &offset_, <a
+ href="Enumerations.html#CompositeOperator"> CompositeOperator</a>
+compose_ = <i>InCompositeOp</i></font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="condenseImage"></a> <font size="-1">condenseImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Condense image (Re-run-length encode image in
+memory).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="contrastImage"></a> <font size="-1">contrastImage</font></center>
+ </td>
+ <td><font size="-1">size_t sharpen_</font></td>
+ <td><font size="-1">Contrast image (enhance intensity differences
+in image)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="cropImage"></a> <font size="-1">cropImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Crop image (subregion of original image)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="cycleColormapImage"></a> <font size="-1">cycleColormap-</font> <br />
+ <font size="-1">Image</font></center>
+ </td>
+ <td><font size="-1">int amount_</font></td>
+ <td><font size="-1">Cycle image colormap</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="despeckleImage"></a> <font size="-1">despeckleImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Despeckle image (reduce speckle noise)</font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="drawImage"></a> <font size="-1">drawImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Drawable.html">Drawable</a>
+&drawable_</font></td>
+ <td><font size="-1">Draw shape or text on image.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const std::list<<a href="Drawable.html">Drawable</a>
+> &drawable_</font></td>
+ <td><font size="-1">Draw shapes or text on image using a set of
+Drawable objects contained in an STL list. Use of this method improves
+drawing performance and allows batching draw objects together in a list
+for repeated use.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="edgeImage"></a> <font size="-1">edgeImage</font></center>
+ </td>
+ <td><font size="-1">size_t radius_ = 0.0</font></td>
+ <td><font size="-1">Edge image (hilight edges in image). 
+The radius is the radius of the pixel neighborhood.. Specify a radius
+of zero for automatic radius selection.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="embossImage"></a> <font size="-1">embossImage</font></center>
+ </td>
+ <td><font size="-1">const double radius_ = 1, const double sigma_
+= 0.5</font></td>
+ <td><font size="-1">Emboss image (hilight edges with 3D effect).
+The radius_ parameter specifies the radius of the Gaussian, in pixels,
+not counting the center pixel.  The sigma_ parameter specifies the
+standard deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="enhanceImage"></a> <font size="-1">enhanceImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Enhance image (minimize noise)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="equalizeImage"></a> <font size="-1">equalizeImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Equalize image (histogram equalization)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="flipImage"></a> <font size="-1">flipImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Flip image (reflect each scanline in the
+vertical direction)</font></td>
+ </tr>
+ <tr>
+ <td rowspan="4">
+ <center><a name="floodFillColorImage"></a> <font size="-1">floodFill-</font> <br />
+ <font size="-1">ColorImage</font></center>
+ </td>
+ <td><font size="-1">ssize_t x_, ssize_t y_, const <a
+ href="Color.html"> Color</a> &fillColor_</font></td>
+ <td rowspan="2"><font size="-1">Flood-fill color across pixels
+that match the color of the target pixel and are neighbors of the
+target pixel. Uses current fuzz setting when determining color match.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&point_, const <a href="Color.html">Color</a> &fillColor_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">ssize_t x_, ssize_t y_, const <a
+ href="Color.html"> Color</a> &fillColor_, const <a href="Color.html">Color</a>
+&borderColor_</font></td>
+ <td rowspan="2"><font size="-1">Flood-fill color across pixels
+starting at target-pixel and stopping at pixels matching specified
+border color. Uses current fuzz setting when determining color match.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&point_, const <a href="Color.html">Color</a> &fillColor_, const <a
+ href="Color.html">Color</a> &borderColor_</font></td>
+ </tr>
+ <tr>
+ <td rowspan="4">
+ <center><a name="floodFillTextureImage"></a> <font size="-1">floodFill-</font> <br />
+ <font size="-1">TextureImage</font></center>
+ </td>
+ <td><font size="-1">ssize_t x_, ssize_t y_,  const <a
+ href="https://www.imagemagick.org/Magick++/Image++.html"> Image</a> &texture_</font></td>
+ <td rowspan="2"><font size="-1">Flood-fill texture across pixels
+that match the color of the target pixel and are neighbors of the
+target pixel. Uses current fuzz setting when determining color match.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&point_, const Image &texture_</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">ssize_t x_, ssize_t y_, const Image
+&texture_, const <a href="Color.html">Color</a> &borderColor_</font></td>
+ <td rowspan="2"><font size="-1">Flood-fill texture across pixels
+starting at target-pixel and stopping at pixels matching specified
+border color. Uses current fuzz setting when determining color match.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&point_, const Image &texture_, const <a href="Color.html">Color</a>
+&borderColor_</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="flopImage"></a> <font size="-1">flopImage</font></center>
+ </td>
+ <td><font size="-1">void </font></td>
+ <td><font size="-1">Flop image (reflect each scanline in the
+horizontal direction)</font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="frameImage"></a> <font size="-1">frameImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_ = "25x25+6+6"</font></td>
+ <td rowspan="2"><font size="-1">Add decorative frame around image</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">size_t width_, size_t height_,
+ssize_t x_, ssize_t y_, ssize_t innerBevel_ = 0, ssize_t outerBevel_ = 0</font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="gammaImage"></a> <font size="-1">gammaImage</font></center>
+ </td>
+ <td><font size="-1">double gamma_</font></td>
+ <td><font size="-1">Gamma correct image (uniform red, green, and
+blue correction).</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">double gammaRed_, double gammaGreen_, double
+gammaBlue_</font></td>
+ <td><font size="-1">Gamma correct red, green, and blue channels
+of image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="gaussianBlur"></a> <font size="-1">gaussianBlurImage</font></center>
+ </td>
+ <td><font size="-1">double width_, double sigma_</font></td>
+ <td><font size="-1">Gaussian blur image. The number of neighbor
+pixels to be included in the convolution mask is specified by
+'width_'.  For example, a width of one gives a (standard) 3x3
+convolution mask. The standard deviation of the gaussian bell curve is
+specified by 'sigma_'.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="implodeImage"></a> <font size="-1">implodeImage</font></center>
+ </td>
+ <td><font size="-1">double factor_</font></td>
+ <td><font size="-1">Implode image (special effect)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="inverseFourierTransformImage"></a> <font size="-1">inverseFourierTransformImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+&phaseImage_, const bool magnitude_</font></td>
+ <td><font size="-1">implements the inverse discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="labelImage"></a> <font size="-1">labelImage</font></center>
+ </td>
+ <td><font size="-1">const string &label_</font></td>
+ <td><font size="-1">Assign a label to an image. Use this option
+to  assign  a  specific label to the image. Optionally
+you can include the image filename, type, width, height, or scene
+number in the label by embedding  <a href="FormatCharacters.html">special
+format characters.</a> If the first character of string is @, the image
+label is read from a file titled by the remaining characters in the
+string. When converting to Postscript, use this  option to specify
+a header string to print above the image.</font></td>
+ </tr>
+ <tr>
+ <td style="text-align: center; vertical-align: middle;"><small><a
+ name="levelImage"></a>levelImage<br />
+ </small></td>
+ <td style="vertical-align: top;"><small>const double black_point,
+const double white_point, const double mid_point=1.0<br />
+ </small></td>
+ <td style="vertical-align: top;"><small>Level image. Adjust the
+levels of the image by scaling the colors falling between specified
+white and black points to the full available quantum range. The
+parameters provided represent the black, mid (gamma), and white
+points.  The black point specifies the darkest color in the image.
+Colors darker than the black point are set to zero. Mid point (gamma)
+specifies a gamma correction to apply to the image. White point
+specifies the lightest color in the image.  Colors brighter than
+the white point are set to the maximum quantum value. The black and
+white point have the valid range 0 to QuantumRange while mid (gamma) has a
+useful range of 0 to ten.</small></td>
+ </tr>
+ <tr>
+ <td style="text-align: center; vertical-align: middle;"><small><a
+ name="levelChannelImage"></a>levelChannelImage<br />
+ </small></td>
+ <td style="vertical-align: top;"><small>const Magick::ChannelType
+channel, const double black_point, const double white_point, const
+double mid_point=1.0<br />
+ </small></td>
+ <td style="vertical-align: top;"><small>Level image channel.
+Adjust the levels of the image channel by scaling the values falling
+between specified white and black points to the full available quantum
+range. The parameters provided represent the black, mid (gamma), and
+white points. The black point specifies the darkest color in the image.
+Colors darker than the black point are set to zero. Mid point (gamma)
+specifies a gamma correction to apply to the image. White point
+specifies the lightest color in the image. Colors brighter than the
+white point are set to the maximum quantum value. The black and white
+point have the valid range 0 to QuantumRange while mid (gamma) has a useful
+range of 0 to ten.</small></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="layerImage"></a> <font size="-1">layerImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#ChannelType">ChannelType</a>
+layer_</font></td>
+ <td><font size="-1">Extract layer from image. Use this option to
+extract a particular layer from  the image.  <i>MatteLayer</i>, 
+for  example, is useful for extracting the opacity values from an
+image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="magnifyImage"></a> <font size="-1">magnifyImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Magnify image by integral size</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="mapImage"></a> <font size="-1">mapImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+&mapImage_ , bool dither_ = false</font></td>
+ <td><font size="-1">Remap image colors with closest color from
+reference image. Set dither_ to <i>true</i> in to apply Floyd/Steinberg
+error diffusion to the image. By default, color reduction chooses an
+optimal  set  of colors that best represent the original
+image. Alternatively, you can  choose  a 
+particular  set  of colors  from  an image file
+with this option.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="matteFloodfillImage"></a> <font size="-1">matteFloodfill-</font> <br />
+ <font size="-1">Image</font></center>
+ </td>
+ <td><font size="-1">const <a href="Color.html">Color</a>
+&target_, unsigned int matte_, ssize_t x_, ssize_t y_, <a
+ href="Enumerations.html#PaintMethod"> PaintMethod</a> method_</font></td>
+ <td><font size="-1">Floodfill designated area with a matte value</font></td>
+ </tr>
+ <tr>
+ <td><a name="medianFilterImage"></a> <font size="-1">medianFilterImage</font></td>
+ <td><font size="-1">const double radius_ = 0.0</font></td>
+ <td><font size="-1">Filter image by replacing each pixel
+component with the median color in a circular neighborhood</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="minifyImage"></a> <font size="-1">minifyImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Reduce image by integral size</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="modulateImage"></a> <font size="-1">modulateImage</font></center>
+ </td>
+ <td><font size="-1">double brightness_, double saturation_,
+double hue_</font></td>
+ <td><font size="-1">Modulate percent hue, saturation, and
+brightness of an image. </font><font size="-1">Modulation of
+saturation and brightness is as a ratio of the current value (100.0 for no
+change). Modulation of hue is an absolute rotation of -180 degrees to
++180 degrees from the current position corresponding to an argument
+range of 0 to 200.0 (100.0 for no change).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="negateImage"></a> <font size="-1">negateImage</font></center>
+ </td>
+ <td><font size="-1">bool grayscale_ = false</font></td>
+ <td><font size="-1">Negate colors in image.  Replace every
+pixel with its complementary color (white becomes black, yellow becomes
+blue, etc.).  Set grayscale to only negate grayscale values in
+image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="normalizeImage"></a> <font size="-1">normalizeImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Normalize image (increase contrast by
+normalizing the pixel values to span the full range of color values).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="oilPaintImage"></a> <font size="-1">oilPaintImage</font></center>
+ </td>
+ <td><font size="-1">size_t radius_ = 3</font></td>
+ <td><font size="-1">Oilpaint image (image looks like oil painting)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="opacityImage"></a> <font size="-1">opacityImage</font></center>
+ </td>
+ <td><font size="-1">size_t opacity_</font></td>
+ <td><font size="-1">Set or attenuate the opacity channel in the
+image. If the image pixels are opaque then they are set to the specified
+opacity value, otherwise they are blended with the supplied opacity
+value.  The value of opacity_ ranges from 0 (completely opaque) to <i>QuantumRange</i>.
+The defines <i>OpaqueOpacity</i> and <i>TransparentOpacity</i> are
+available to specify completely opaque or completely transparent,
+respectively.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="opaqueImage"></a> <font size="-1">opaqueImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Color.html">Color</a>
+&opaqueColor_, const <a href="Color.html">Color</a> &penColor_</font></td>
+ <td><font size="-1">Change color of pixels matching opaqueColor_
+to specified penColor_.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeImage"></a> <font size="-1">quantizeImage</font></center>
+ </td>
+ <td><font size="-1">bool measureError_ = false</font></td>
+ <td><font size="-1">Quantize image (reduce number of colors). Set
+measureError_ to true in order to calculate error attributes.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="raiseImage"></a> <font size="-1">raiseImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_ = "6x6+0+0",  bool raisedFlag_ =  false</font></td>
+ <td><font size="-1">Raise image (lighten or darken the edges of
+an image to give a 3-D raised or lowered effect)</font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="reduceNoiseImage"></a> <font size="-1">reduceNoise-</font> <br />
+ <font size="-1">Image</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td rowspan="2"><font size="-1">Reduce noise in image using a
+noise peak elimination filter.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">size_t order_</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="rollImage"></a> <font size="-1">rollImage</font></center>
+ </td>
+ <td><font size="-1">int columns_, ssize_t rows_</font></td>
+ <td><font size="-1">Roll image (rolls image vertically and
+horizontally) by specified number of columnms and rows)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="rotateImage"></a> <font size="-1">rotateImage</font></center>
+ </td>
+ <td><font size="-1">double degrees_</font></td>
+ <td><font size="-1">Rotate image counter-clockwise by specified
+number of degrees</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="sampleImage"></a> <font size="-1">sampleImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_ </font></td>
+ <td><font size="-1">Resize image by using pixel sampling algorithm</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="scaleImage"></a> <font size="-1">scaleImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Resize image by using simple ratio algorithm</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="segmentImage"></a> <font size="-1">segmentImage</font></center>
+ </td>
+ <td><font size="-1">double clusterThreshold_ = 1.0,</font> <br />
+ <font size="-1">double smoothingThreshold_ = 1.5</font></td>
+ <td><font size="-1">Segment (coalesce similar image components)
+by analyzing the histograms of the color components and identifying
+units that are homogeneous with the fuzzy c-means technique. Also uses <i>quantizeColorSpace</i>
+and <i>verbose</i> image attributes. Specify <i>clusterThreshold_</i> ,
+as the number  of  pixels  each cluster  must exceed
+the cluster threshold to be considered valid. <i>SmoothingThreshold_</i>
+eliminates noise in the  second derivative of the histogram. As the
+value is  increased, you can  expect  a  smoother
+second derivative.  The default is 1.5.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="shadeImage"></a> <font size="-1">shadeImage</font></center>
+ </td>
+ <td><font size="-1">double azimuth_ = 30, double elevation_ = 30,</font> <br />
+ <font size="-1">bool colorShading_ = false</font></td>
+ <td><font size="-1">Shade image using distant light source.
+Specify <i> azimuth_</i> and <i>elevation_</i> as the 
+position  of  the light source. By default, the shading
+results as a grayscale image.. Set c<i>olorShading_</i> to <i>true</i> to
+shade the red, green, and blue components of the image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="sharpenImage"></a> <font size="-1">sharpenImage</font></center>
+ </td>
+ <td><font size="-1">const double radius_ = 1, const double sigma_
+= 0.5</font></td>
+ <td><font size="-1">Sharpen pixels in image. The radius_
+parameter specifies the radius of the Gaussian, in pixels, not counting
+the center pixel.  The sigma_ parameter specifies the standard
+deviation of the Laplacian, in pixels.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="shaveImage"></a> <font size="-1">shaveImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Shave pixels from image edges.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="shearImage"></a> <font size="-1">shearImage</font></center>
+ </td>
+ <td><font size="-1">double xShearAngle_, double yShearAngle_</font></td>
+ <td><font size="-1">Shear image (create parallelogram by sliding
+image by X or Y axis).  Shearing slides one edge of an image along
+the X  or  Y axis,  creating  a
+parallelogram.  An X direction shear slides an edge along the X
+axis, while  a  Y  direction shear  slides  an
+edge along the Y axis.  The amount of the shear is controlled by a
+shear angle.  For X direction  shears,  x  degrees
+is measured relative to the Y axis, and similarly, for Y direction
+shears  y  degrees is measured relative to the X axis. Empty
+triangles left over from shearing the  image  are filled 
+with  the  color  defined as <i>borderColor</i>. </font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="solarizeImage"></a> <font size="-1">solarizeImage</font></center>
+ </td>
+ <td><font size="-1">double factor_</font></td>
+ <td><font size="-1">Solarize image (similar to effect seen when
+exposing a photographic film to light during the development process)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="spreadImage"></a> <font size="-1">spreadImage</font></center>
+ </td>
+ <td><font size="-1">size_t amount_ = 3</font></td>
+ <td><font size="-1">Spread pixels randomly within image by
+specified amount</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="steganoImage"></a> <font size="-1">steganoImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+&watermark_</font></td>
+ <td><font size="-1">Add a digital watermark to the image (based
+on second image)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="stereoImage"></a> <font size="-1">stereoImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+&rightImage_</font></td>
+ <td><font size="-1">Create an image which appears in stereo when
+viewed with red-blue glasses (Red image on left, blue on right)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="swirlImage"></a> <font size="-1">swirlImage</font></center>
+ </td>
+ <td><font size="-1">double degrees_</font></td>
+ <td><font size="-1">Swirl image (image pixels are rotated by
+degrees)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="textureImage"></a> <font size="-1">textureImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a>
+&texture_</font></td>
+ <td><font size="-1">Layer a texture on image background</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="thresholdImage"></a> <font size="-1">thresholdImage</font></center>
+ </td>
+ <td><font size="-1">double threshold_</font></td>
+ <td><font size="-1">Threshold image</font></td>
+ </tr>
+ <tr>
+ <td rowspan="2">
+ <center><a name="transformImage"></a> <font size="-1">transformImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&imageGeometry_</font></td>
+ <td rowspan="2"><font size="-1">Transform image based on image
+and crop geometries. Crop geometry is optional.</font></td>
+ </tr>
+ <tr>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&imageGeometry_, const <a href="Geometry.html">Geometry</a>
+&cropGeometry_ </font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="transparentImage"></a> <font size="-1">transparentImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Color.html">Color</a>
+&color_</font></td>
+ <td><font size="-1">Add matte image to image, setting pixels
+matching color to transparent.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="trimImage"></a> <font size="-1">trimImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">Trim edges that are the background color from
+the image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="waveImage"></a> <font size="-1">waveImage</font></center>
+ </td>
+ <td><font size="-1">double amplitude_ = 25.0, double wavelength_
+= 150.0</font></td>
+ <td><font size="-1">Alter an image along a sine wave.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="zoomImage"></a> <font size="-1">zoomImage</font></center>
+ </td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Zoom image to specified size.</font></td>
+ </tr>
+ </tbody>
+</table></ul>
+</p>
+<p>Function objects are available to set attributes on image frames
+which are equivalent to methods in the Image object. These function
+objects allow setting an option across a range of image frames using f<tt>
+or_each()</tt>. </p>
+<p>The following code is an example of how the color 'red' may be set
+to transparent in a GIF animation: </p>
+<pre class="code">
+list<image> images;
+readImages( &images, "animation.gif" );
+for_each ( images.begin(), images.end(), transparentImage( "red" ) );
+writeImages( images.begin(), images.end(), "animation.gif" );
+</pre>
+<p>The available function objects for setting image attributes are <br />
+ 
+<ul><table border="1">
+ <caption style="font-weight: bold;">Image Attributes</caption> <tbody>
+ <tr>
+ <td>
+ <center><b>Attribute</b></center>
+ </td>
+ <td>
+ <center><b>Type</b></center>
+ </td>
+ <td>
+ <center><b>Constructor Signature(s)</b></center>
+ </td>
+ <td>
+ <center><b>Description</b></center>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="adjoinImage"></a> <font size="-1">adjoinImage</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Join images into a single multi-image file.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="antiAlias"></a> <font size="-1">antiAliasImage</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Control antialiasing of rendered Postscript
+and Postscript or TrueType fonts. Enabled by default.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="animationDelay"></a> <font size="-1">animation-</font> <br />
+ <font size="-1">DelayImage</font></center>
+ </td>
+ <td><font size="-1">size_t (0 to 65535)</font></td>
+ <td><font size="-1">size_t delay_</font></td>
+ <td><font size="-1">Time in 1/100ths of a second (0 to 65535)
+which must expire before displaying the next image in an animated
+sequence. This option is useful for regulating the animation of a
+sequence  of GIF images within Netscape.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="animationIterations"></a> <font size="-1">animation-</font> <br />
+ <font size="-1">IterationsImage</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">size_t iterations_</font></td>
+ <td><font size="-1">Number of iterations to loop an animation
+(e.g. Netscape loop extension) for.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="backgroundColor"></a> <font size="-1">background-</font> <br />
+ <font size="-1">ColorImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Color.html">Color</a> </font></td>
+ <td><font size="-1">const <a href="Color.html">Color</a>
+&color_</font></td>
+ <td><font size="-1">Image background color</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="backgroundTexture"></a> <font size="-1">background-</font> <br />
+ <font size="-1">TextureImage</font></center>
+ </td>
+ <td><font size="-1">std::string</font></td>
+ <td><font size="-1">const string &texture_</font></td>
+ <td><font size="-1">Image to use as background texture.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="borderColor"></a> <font size="-1">borderColor-</font> <br />
+ <font size="-1">Image</font></center>
+ </td>
+ <td><font size="-1"><a href="Color.html">Color</a> </font></td>
+ <td><font size="-1"> const <a href="Color.html">Color</a>
+&color_</font></td>
+ <td><font size="-1">Image border color</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="boxColor"></a> <font size="-1">boxColorImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Color.html">Color</a> </font></td>
+ <td><font size="-1">const <a href="Color.html">Color</a>
+&boxColor_</font></td>
+ <td><font size="-1">Base color that annotation text is rendered
+on.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chromaBluePrimary"></a> <font size="-1">chroma-</font> <br />
+ <font size="-1">BluePrimaryImage</font></center>
+ </td>
+ <td><font size="-1">double x & y</font></td>
+ <td><font size="-1">double x_, double y_</font></td>
+ <td><font size="-1">Chromaticity blue primary point (e.g. x=0.15,
+y=0.06)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chromaGreenPrimary"></a> <font size="-1">chroma-</font> <br />
+ <font size="-1">GreenPrimaryImage</font></center>
+ </td>
+ <td><font size="-1">double x & y</font></td>
+ <td><font size="-1">double x_, double y_</font></td>
+ <td><font size="-1">Chromaticity green primary point (e.g. x=0.3,
+y=0.6)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chromaRedPrimary"></a> <font size="-1">chroma-</font> <br />
+ <font size="-1">RedPrimaryImage</font></center>
+ </td>
+ <td><font size="-1">double x & y</font></td>
+ <td><font size="-1">double x_, double y_</font></td>
+ <td><font size="-1">Chromaticity red primary point (e.g. x=0.64,
+y=0.33)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="chromaWhitePoint"></a> <font size="-1">chroma-</font> <br />
+ <font size="-1">WhitePointImage</font></center>
+ </td>
+ <td><font size="-1">double x & y</font></td>
+ <td><font size="-1">double x_, double y_</font></td>
+ <td><font size="-1">Chromaticity white point (e.g. x=0.3127,
+y=0.329)</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="colorFuzz"></a> <font size="-1">colorFuzzImage</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">double fuzz_</font></td>
+ <td><font size="-1">Colors within this distance are considered
+equal. A number of algorithms search for a target  color. By
+default the color must be exact. Use this option to match colors that
+are close to the target color in RGB space.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="colorMap"></a> <font size="-1">colorMapImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Color.html">Color</a> </font></td>
+ <td><font size="-1">size_t index_, const <a
+ href="Color.html">Color</a> &color_</font></td>
+ <td><font size="-1">Color at color-pallet index.</font></td>
+ </tr>
+ <tr>
+ <td><a name="colorSpaceImage"></a> <font size="-1">colorSpaceImage</font></td>
+ <td><font size="-1"><a href="Enumerations.html#ColorspaceType">ColorspaceType</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#ColorspaceType">ColorspaceType</a>
+colorSpace_</font></td>
+ <td><font size="-1">The colorspace (e.g. CMYK) used to represent
+the image pixel colors. Image pixels are always stored as RGB(A) except
+for the case of CMY(K).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="composeImage"></a> <font size="-1">composeImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#CompositeOperator">CompositeOperator</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#CompositeOperator">CompositeOperator</a>
+compose_</font></td>
+ <td><font size="-1">Composition operator to be used when
+composition is implicitly used (such as for image flattening).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="compressType"></a> <font size="-1">compressType-</font> <br />
+ <font size="-1">Image</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#CompressionType">CompressionType</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#CompressionType">CompressionType</a>
+compressType_</font></td>
+ <td><font size="-1">Image compresion type. The default is the
+compression type of the specified image file.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="density"></a> <font size="-1">densityImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Geometry.html">Geometry</a>  
+(default 72x72)</font></td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&density_</font></td>
+ <td><font size="-1">Vertical and horizontal resolution in pixels
+of the image. This option specifies an image density when decoding a
+Postscript or Portable Document page. Often used with <i>psPageSize</i>.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="depth"></a> <font size="-1">depthImage</font></center>
+ </td>
+ <td><font size="-1">size_t (8 or 16)</font></td>
+ <td><font size="-1">size_t depth_</font></td>
+ <td><font size="-1">Image depth. Used to specify the bit depth
+when reading or writing  raw images or thwn the output format
+supports multiple depths. Defaults to the quantum depth that
+ImageMagick is compiled with.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="endianImage"></a> <font size="-1">endianImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#EndianType">EndianType</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#EndianType">EndianType</a>
+endian_</font></td>
+ <td><font size="-1">Specify (or obtain) endian option for formats
+which support it.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fileName"></a> <font size="-1">fileNameImage</font></center>
+ </td>
+ <td><font size="-1">std::string</font></td>
+ <td><font size="-1">const std::string &fileName_</font></td>
+ <td><font size="-1">Image file name.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fillColorImage"></a> <font size="-1">fillColorImage</font></center>
+ </td>
+ <td><font size="-1">Color</font></td>
+ <td><font size="-1">const Color &fillColor_</font></td>
+ <td><font size="-1">Color to use when filling drawn objects</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="filterType"></a> <font size="-1">filterTypeImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#FilterTypes">FilterTypes</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#FilterTypes">FilterTypes</a>
+filterType_</font></td>
+ <td><font size="-1">Filter to use when resizing image. The
+reduction filter employed has a sigificant effect on the time required
+to resize an image and the resulting quality. The default filter is <i>Lanczos</i>
+which has been shown to produce good results when reducing images.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="font"></a> <font size="-1">fontImage</font></center>
+ </td>
+ <td><font size="-1">std::string</font></td>
+ <td><font size="-1">const std::string &font_</font></td>
+ <td><font size="-1">Text rendering font. If the font is a fully
+qualified X server font name, the font is obtained from an X 
+server. To use a TrueType font, precede the TrueType filename with an @.
+Otherwise, specify  a  Postscript font name (e.g.
+"helvetica").</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="fontPointsize"></a> <font size="-1">fontPointsize-</font> <br />
+ <font size="-1">Image</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">size_t pointSize_</font></td>
+ <td><font size="-1">Text rendering font point size</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="gifDisposeMethod"></a> <font size="-1">gifDispose-</font> <br />
+ <font size="-1">MethodImage</font></center>
+ </td>
+ <td><font size="-1">size_t</font> <br />
+ <font size="-1">{ 0 = Disposal not specified,</font> <br />
+ <font size="-1">1 = Do not dispose of graphic,</font> <br />
+ <font size="-1">3 = Overwrite graphic with background color,</font> <br />
+ <font size="-1">4 = Overwrite graphic with previous graphic. }</font></td>
+ <td><font size="-1">size_t disposeMethod_</font></td>
+ <td><font size="-1">layer disposal method. This option is used to
+control how successive frames are rendered (how the preceding frame is
+disposed of) when creating a GIF animation.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="interlaceType"></a> <font size="-1">interlace-</font> <br />
+ <font size="-1">TypeImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#InterlaceType">InterlaceType</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#InterlaceType">InterlaceType</a>
+interlace_</font></td>
+ <td><font size="-1">The type of interlacing scheme (default <i>NoInterlace</i>
+). This option is used to specify the type of  interlacing
+scheme  for  raw  image formats such as RGB or YUV. <i>NoInterlace</i>
+means do not  interlace, <i>LineInterlace</i> uses scanline
+interlacing, and <i>PlaneInterlace</i> uses plane interlacing. <i>
+PartitionInterlace</i> is like <i>PlaneInterlace</i> except the 
+different planes  are saved  to individual files (e.g. 
+image.R, image.G, and image.B). Use <i>LineInterlace</i> or <i>PlaneInterlace</i>
+to create an interlaced GIF or progressive JPEG image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="isValidImage"></a> <font size="-1">isValidImage</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">bool isValid_</font></td>
+ <td><font size="-1">Set image validity. Valid images become empty
+(inValid) if argument is false.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="label"></a> <font size="-1">labelImage</font></center>
+ </td>
+ <td><font size="-1">std::string</font></td>
+ <td><font size="-1">const std::string &label_</font></td>
+ <td><font size="-1">Image label</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="lineWidth"></a> <font size="-1">lineWidthImage</font></center>
+ </td>
+ <td><font size="-1">double</font></td>
+ <td><font size="-1">double lineWidth_</font></td>
+ <td><font size="-1">Line width for drawing lines, circles,
+ellipses, etc. See <a href="Drawable.html">Drawable</a> .</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="magick"></a> <font size="-1">magickImage</font></center>
+ </td>
+ <td><font size="-1">std::string</font></td>
+ <td><font size="-1"> const std::string &magick_</font></td>
+ <td><font size="-1">Get image format (e.g. "GIF")</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="matte"></a> <font size="-1">matteImage</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">bool matteFlag_</font></td>
+ <td><font size="-1">True if the image has transparency. If set
+True, store matte channel if  the image has one otherwise create
+an opaque one.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="matteColor"></a> <font size="-1">matteColorImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Color.html">Color</a> </font></td>
+ <td><font size="-1">const <a href="Color.html">Color</a>
+&matteColor_</font></td>
+ <td><font size="-1">Image matte (frame) color</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="monochrome"></a> <font size="-1">monochrome-</font> <br />
+ <font size="-1">Image</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Transform the image to black and white</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="pageImage"></a> <font size="-1">pageImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Geometry.html#PostscriptPageSize">Geometry</a> </font></td>
+ <td><font size="-1">const <a
+ href="Geometry.html#PostscriptPageSize">Geometry</a> &pageSize_</font></td>
+ <td><font size="-1">Preferred size and location of an image
+canvas.</font>
+ <p><font size="-1">Use this option to specify the dimensions and
+position of the Postscript page in dots per inch or a TEXT page in
+pixels. This option is typically used in concert with <i><a
+ href="STL.html#density">density</a> </i>.</font> </p>
+ <p><font size="-1">Page may also be used to position a GIF image
+(such as for a scene in an animation)</font></p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="penColor"></a> <font size="-1">penColorImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Color.html">Color</a> </font></td>
+ <td><font size="-1">const <a href="Color.html">Color</a>
+&penColor_</font></td>
+ <td><font size="-1">Pen color to use when annotating on or
+drawing on image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="penTexture"></a> <font size="-1">penTextureImage</font></center>
+ </td>
+ <td><font size="-1"><a href="https://www.imagemagick.org/Magick++/Image++.html">Image</a> </font></td>
+ <td><font size="-1">const Image & penTexture_</font></td>
+ <td><font size="-1">Texture image to paint with (similar to
+penColor).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="pixelColor"></a> <font size="-1">pixelColorImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Color.html">Color</a> </font></td>
+ <td><font size="-1">size_t x_, size_t y_, const <a
+ href="Color.html"> Color</a> &color_</font></td>
+ <td><font size="-1">Get/set pixel color at location x & y.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="psPageSize"></a> <font size="-1">psPageSizeImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Geometry.html#PostscriptPageSize">Geometry</a> </font></td>
+ <td><font size="-1">const <a
+ href="Geometry.html#PostscriptPageSize">Geometry</a> &pageSize_</font></td>
+ <td><font size="-1">Postscript page size. Use this  option
+to specify the dimensions  of the Postscript page in dots per inch
+or a TEXT page in pixels. This option is typically used in concert with <i>density</i>.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quality"></a> <font size="-1">qualityImage</font></center>
+ </td>
+ <td><font size="-1">size_t (0 to 100)</font></td>
+ <td><font size="-1">size_t quality_</font></td>
+ <td><font size="-1">JPEG/MIFF/PNG compression level (default 75).</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeColors"></a> <font size="-1">quantize-</font> <br />
+ <font size="-1">ColorsImage</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">size_t colors_</font></td>
+ <td><font size="-1">Preferred number of colors in the image. The
+actual number of colors in the image may be less than your request, but
+never more. Images with less unique colors than specified with this
+option will have any duplicate or unused colors removed.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeColorSpace"></a> <font size="-1">quantize-</font> <br />
+ <font size="-1">ColorSpaceImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#ColorspaceType">ColorspaceType</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#ColorspaceType">ColorspaceType</a>
+colorSpace_</font></td>
+ <td><font size="-1">Colorspace to quantize colors in (default
+RGB). Empirical evidence suggests that distances in color spaces such
+as YUV or YIQ correspond to perceptual color differences more closely
+than do distances in RGB space. These color spaces may give better
+results when color reducing an image.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeDither"></a> <font size="-1">quantize-</font> <br />
+ <font size="-1">DitherImage</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">bool flag_</font></td>
+ <td><font size="-1">Apply Floyd/Steinberg error diffusion to the
+image. The basic strategy of dithering is to  trade  intensity
+resolution  for  spatial  resolution  by 
+averaging the intensities  of  several 
+neighboring  pixels. Images which  suffer  from 
+severe  contouring  when  reducing colors can be improved
+with this option. The quantizeColors or monochrome option must be set
+for this option to take effect.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="quantizeTreeDepth"></a> <font size="-1">quantize-</font> <br />
+ <font size="-1">TreeDepthImage</font></center>
+ </td>
+ <td><font size="-1">size_t (0 to 8)</font></td>
+ <td><font size="-1">size_t treeDepth_</font></td>
+ <td><font size="-1">Depth of the quantization color
+classification tree. Values of 0 or 1 allow selection of the optimal
+tree depth for the color reduction algorithm. Values between 2 and 8 may
+be used to manually adjust the tree depth.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="renderingIntent"></a> <font size="-1">rendering-</font> <br />
+ <font size="-1">IntentImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#RenderingIntent">RenderingIntent</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#RenderingIntent">RenderingIntent</a>
+render_</font></td>
+ <td><font size="-1">The type of rendering intent</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="resolutionUnits"></a> <font size="-1">resolution-</font> <br />
+ <font size="-1">UnitsImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#ResolutionType">ResolutionType</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#ResolutionType">ResolutionType</a>
+units_</font></td>
+ <td><font size="-1">Units of image resolution</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="scene"></a> <font size="-1">sceneImage</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">size_t scene_</font></td>
+ <td><font size="-1">Image scene number</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="size"></a> <font size="-1">sizeImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Geometry.html">Geometry</a> </font></td>
+ <td><font size="-1">const <a href="Geometry.html">Geometry</a>
+&geometry_</font></td>
+ <td><font size="-1">Width and height of a raw image (an image
+which does not support width and height information).  Size may
+also be used to affect the image size read from a multi-resolution
+format (e.g. Photo CD, JBIG, or JPEG.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="stripImage"></a> <font size="-1">stripImage</font></center>
+ </td>
+ <td><font size="-1">void</font></td>
+ <td><font size="-1">strips an image of all profiles and comments.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="strokeColorImage"></a> <font size="-1">strokeColorImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Color.html">Color</a> </font></td>
+ <td><font size="-1">const <a href="Color.html">Color</a>
+&strokeColor_</font></td>
+ <td><font size="-1">Color to use when drawing object outlines</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="subImage"></a> <font size="-1">subImageImage</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">size_t subImage_</font></td>
+ <td><font size="-1">Subimage of an image sequence</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="subRange"></a> <font size="-1">subRangeImage</font></center>
+ </td>
+ <td><font size="-1">size_t</font></td>
+ <td><font size="-1">size_t subRange_</font></td>
+ <td><font size="-1">Number of images relative to the base image</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="tileName"></a> <font size="-1">tileNameImage</font></center>
+ </td>
+ <td><font size="-1">std::string</font></td>
+ <td><font size="-1">const std::string &tileName_</font></td>
+ <td><font size="-1">Tile name</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="typeImage"></a> <font size="-1">typeImage</font></center>
+ </td>
+ <td><font size="-1"><a href="Enumerations.html#ImageType">ImageType</a> </font></td>
+ <td><font size="-1"><a href="Enumerations.html#ImageType">ImageType</a>
+type_</font></td>
+ <td><font size="-1">Image storage type.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="verbose"></a> <font size="-1">verboseImage</font></center>
+ </td>
+ <td><font size="-1">bool</font></td>
+ <td><font size="-1">bool verboseFlag_</font></td>
+ <td><font size="-1">Print detailed information about the image</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="view"></a> <font size="-1">viewImage</font></center>
+ </td>
+ <td><font size="-1">std::string</font></td>
+ <td><font size="-1">const std::string &view_</font></td>
+ <td><font size="-1">FlashPix viewing parameters.</font></td>
+ </tr>
+ <tr>
+ <td>
+ <center><a name="x11Display"></a> <font size="-1">x11DisplayImage</font></center>
+ </td>
+ <td><font size="-1">std::string (e.g. "hostname:0.0")</font></td>
+ <td><font size="-1">const std::string &display_</font></td>
+ <td><font size="-1">X11 display to display to, obtain fonts from,
+or to capture image from</font></td>
+ </tr>
+ </tbody>
+</table></ul>
+<br />
+  </p>
+<center>
+<h3> Query Image Format Support</h3>
+</center>
+<p>Magick++ provides the <a name="coderInfoList"></a> <i>coderInfoList()</i>
+function to support obtaining information about the image formats
+supported by ImageMagick. Support for image formats in ImageMagick
+is provided by modules known as "coders". A user-provided container is
+updated based on a boolean truth-table match. The truth-table supports
+matching based on whether ImageMagick can read the format, write the
+format, or supports multiple frames for the format. A wildcard specifier
+is supported for any "don't care" field. The data obtained via
+coderInfoList() may be useful for preparing GUI dialog boxes or for
+deciding which output format to write based on support within the
+ImageMagick build.</p>
+<p>The definition of coderInfoList is: </p>
+<pre class="code">
+class CoderInfo
+ {
+ public:
+
+ enum MatchType {
+ AnyMatch, // match any coder
+ TrueMatch, // match coder if true
+ FalseMatch // match coder if false
+ };
+
+ [ remaining CoderInfo methods ]
+
+ }
+
+ template <class Container >
+ void coderInfoList( Container *container_,
+ CoderInfo::MatchType isReadable_ = CoderInfo::AnyMatch,
+ CoderInfo::MatchType isWritable_ = CoderInfo::AnyMatch,
+ CoderInfo::MatchType isMultiFrame_ = CoderInfo::AnyMatch
+ );
+</pre>
+<p>The following example shows how to retrieve a list of all of the
+coders which support reading images and print the coder attributes (all
+listed formats will be readable): </p>
+<pre class="code">
+ list<CoderInfo> coderList;
+ coderInfoList( &coderList, // Reference to output list
+ CoderInfo::TrueMatch, // Match readable formats
+ CoderInfo::AnyMatch, // Don't care about writable formats
+ CoderInfo::AnyMatch); // Don't care about multi-frame support
+ list<CoderInfo>::iterator entry = coderList.begin();
+ while( entry != coderList.end() )
+ {
+ cout << entry->name() << ": (" << entry->description() << ") : ";
+ cout << "Readable = ";
+ if ( entry->isReadable() )
+ cout << "true";
+ else
+ cout << "false";
+ cout << ", ";
+ cout << "Writable = ";
+ if ( entry->isWritable() )
+ cout << "true";
+ else
+ cout << "false";
+ cout << ", ";
+ cout << "Multiframe = ";
+ if ( entry->isMultiframe() )
+ cout << "true";
+ else
+ cout << "false";
+ cout << endl;
+ entry ++;
+ }
+</pre>
+<tt><font color="#000066">   }</font></tt> <!-- p -->
+<h3 style="text-align: center;">Obtaining A Color Histogram  </h3>
+<p>Magick++ provides the <a name="colorHistogram"></a><span
+ style="font-weight: bold;">colorHistogram</span> template function to
+retrieve a color histogram from an image. A color histogram provides a
+count of how many times each color occurs in the image. The histogram is
+written into a user-provided container, which (for example) could be a <span
+ style="font-style: italic;"><vector></span> or a <span
+ style="font-style: italic;"><map></span>.  When a
+<map> is used, the <span style="font-style: italic;">Color</span>
+is used as the key so that quick lookups of usage counts for colors may
+be performed. Writing into a <span style="font-style: italic;"><map></span>
+may be slower than writing into a <span style="font-style: italic;"><vector></span>
+since the <span style="font-style: italic;"><map></span> sorts the
+entries (by color intensity) and checks for uniqueness. Each histogram
+entry is contained in type <span style="font-style: italic;">std::pair<Magick::Color,unsigned
+long></span><span style="font-style: italic;"> </span>with the first
+member of the pair being a <span style="font-style: italic;">Color,</span>
+and the second member of the pair being an '<span
+ style="font-style: italic;">unsigned long</span>'. Use the <span
+ style="font-style: italic;"><pair></span> "<span
+ style="font-style: italic;">first</span>" member to access the Color
+and the "<span style="font-style: italic;">second</span>" member to
+access the number of times the color occurs in the image.</p>
+<p>The template function declaration is as follows:<br />
+</p>
+<pre class="code">
+template <class Container >
+void colorHistogram( Container *histogram_, const Image image)
+</pre>
+<p>The following examples illustrate using both a <map> and a
+<vector> to retrieve the color histogram, and print out a
+formatted summary.<br />
+<br />
+Using <map>:<br />
+    <br />
+<pre class="code">
+ Image image("image.miff");
+ map<Color,unsigned long> histogram;
+ colorHistogram( &histogram, image );
+ std::map<Color,unsigned long>::const_iterator p=histogram.begin();
+ while (p != histogram.end())
+ {
+ cout << setw(10) << (int)p->second << ": ("
+ << setw(quantum_width) << (int)p->first.redQuantum() << ","
+ << setw(quantum_width) << (int)p->first.greenQuantum() << ","
+ << setw(quantum_width) << (int)p->first.blueQuantum() << ")"
+ << endl;
+ p++;
+ }
+</pre>
+<br />
+Using <vector>:<br />
+    <br />
+<pre class="code">
+ Image image("image.miff");
+ std::vector<std::pair<Color,unsigned long> > histogram;
+ colorHistogram( &histogram, image );
+ std::vector<std::pair<Color,unsigned long> >::const_iterator p=histogram.begin();
+ while (p != histogram.end())
+ {
+ cout << setw(10) << (int)p->second << ": ("
+ << setw(quantum_width) << (int)p->first.redQuantum() << ","
+ << setw(quantum_width) << (int)p->first.greenQuantum() << ","
+ << setw(quantum_width) << (int)p->first.blueQuantum() << ")"
+ << endl;
+ p++;
+ }
+</pre>
+</p>
+</div>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Magick++ API: Type Metrics</title>
+<link rel="stylesheet" href="magick.css" type="text/css" />
+</head>
+<body>
+<div class="doc-section">
+<h1 align="center">Magick::TypeMetric</h1>
+<p>The <i>TypeMetric</i> class provides the means to pass data from the Image class's TypeMetric method to the user. It provides information regarding font metrics such as ascent, descent, text width, text height, and maximum horizontal advance. The units of these font metrics are in pixels, and that the metrics are dependent on the current Image font (default Ghostscript's "Helvetica"), pointsize (default 12 points), and x/y resolution (default 72 DPI) settings.</p>
+<p>The pixel units may be converted to points (the standard resolution-independent measure used by the typesetting industry) via the following equation:</p>
+<pre class="text">
+size_points = (size_pixels * 72)/resolution
+</pre>
+<p>where resolution is in dots-per-inch (DPI). This means that at the default image resolution, there is one pixel per point.</p>
+<p>Note that a font's pointsize is only a first-order approximation of the font height (ascender + descender) in points. The relationship between the specified pointsize and the rendered font height is determined by the font designer.</p>
+<p>See <a href="http://freetype.sourceforge.net/freetype2/docs/glyphs/index.html">FreeType Glyph Conventions</a> for a detailed description of font metrics related issues.</p>
+<p style="margin-bottom: 0cm">The methods available in the <i>TypeMetric</i> class are shown in the following table:</p>
+<p align="center" style="margin-bottom: 0cm"><b>TypeMetric Methods</b></p>
+<ul><table width="100%" border="1" cellpadding="2" cellspacing="2">
+<tr>
+<td>
+<p align="center"><b>Method</b></p></td>
+<td>
+<p align="center"><b>Returns</b></p></td>
+<td>
+<p><b>Units</b></p></td>
+<td>
+<p align="center"><b>Signature</b></p></td>
+<td>
+<p align="center"><b>Description</b></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="ascent"></a><font size="2">ascent</font></p></td>
+<td>
+<p><font size="2">double</font></p></td>
+<td>
+<p><font size="2">Pixels</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Returns the distance in pixels from the text baseline to the highest/upper grid coordinate used to place an outline point. Always a positive value.</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="descent"></a><font size="2">descent</font></p></td>
+<td>
+<p><font size="2">double</font></p></td>
+<td>
+<p><font size="2">Pixels</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Returns the the distance in pixels from the baseline to the lowest grid coordinate used to place an outline point. Always a negative value.</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="textWidth"></a><font size="2">textWidth</font></p></td>
+<td>
+<p><font size="2">double</font></p></td>
+<td>
+<p><font size="2">Pixels</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Returns text width in pixels.</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="textHeight"></a><font size="2">textHeight</font></p></td>
+<td>
+<p><font size="2">double</font></p></td>
+<td>
+<p><font size="2">Pixels</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Returns text height in pixels.</font></p></td></tr>
+<tr>
+<td>
+<p align="center"><a name="maxHorizontalAdvance"></a><font size="2">maxHorizontalAdvance</font></p></td>
+<td>
+<p><font size="2">double</font></p></td>
+<td>
+<p><font size="2">Pixels</font></p></td>
+<td>
+<p><font size="2">void</font></p></td>
+<td>
+<p><font size="2">Returns the maximum horizontal advance (advance from the beginning of a character to the beginning of the next character) in pixels.</font></p></td></tr></table></ul>
+</div>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<meta name="GENERATOR" content="PageBreeze Free HTML Editor (http://www.pagebreeze.com)">\r
+<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" >\r
+<meta name="keywords" content="ImageMagick, convert, MagickWand,C programming, example">\r
+<title>MagickWand Examples in C</title>\r
+\r
+<style>\r
+<!--\r
+h1 { font-family: Arial, sans-serif; font-size: 30px; color: #000080;}\r
+h2 { font-family: Arial, sans-serif; font-size: 18px; color: #004080;}\r
+h3 { font-family: Arial, sans-serif; font-size: 16px; color: #004080;}\r
+li { font-family: Arial, sans-serif; font-size: 16px; font-weight: bold;}\r
+\r
+body,b,i,em,dt,dd,dl,sl,caption,th,td,tr,u,blink,select,option,form,div,\r
+\r
+\r
+/* IE Specific */\r
+body, textarea {\r
+ scrollbar-3dlight-color: #808080;\r
+ scrollbar-highlight-color: #808080;\r
+ scrollbar-face-color: #004080;\r
+ scrollbar-shadow-color: #808080;\r
+ scrollbar-darkshadow-color: #805B32;\r
+ scrollbar-arrow-color: #000000;\r
+ scrollbar-track-color: #F8EFE2;\r
+}\r
+/* END IE Specific */\r
+-->\r
+</style>\r
+\r
+</head>\r
+<body bgcolor="#ffffff" >\r
+<p>\r
+<table cellspacing="1" cellpadding="3" width="800" align="center" bgcolor="#004080" \r
+border="0">\r
+ \r
+ <tr>\r
+ <td> \r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td bgcolor="#ffffff">\r
+ <p align="center"> </p>\r
+ <h1 align="center"> MagickWand Examples in C</h1>\r
+\r
+ <p align="left">The programs on these pages show how to use the ImageMagick\r
+ MagickWand API. Each example is presented as a C \r
+ function, complete with headers, so that it can be copied to a file and \r
+ then included in your own C project. The code is written for Windows and was\r
+ compiled using MSVC V7 but, with a little tweaking, it should\r
+ also run on Linux.</p>\r
+ <p align="left">Some of the examples show a command line "program" and how to achieve the equivalent output using MagickWand.\r
+ By "equivalent" I mean that the program produces the \r
+ same image as the command line example - it won't necessarily be exactly how it is achieved by the convert program.\r
+ In some cases there is only one command line \r
+ example to replicate but in others there can be 3 or 4 commands which \r
+ build on each other to produce a final result. In most of these cases I \r
+ have created one C function which replicates all the commands but each \r
+ section of code will show how it relates to the original commands. \r
+ </p>\r
+ <p align="left"> \r
+ There is little or no error checking in the examples but\r
+ you should add your own where needed. For example, the MagickReadImage\r
+ function returns a true or false value depending upon whether the read succeeded and \r
+ you should check this using code similar to this:</p>\r
+ <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">\r
+ <p align="left"> if(MagickReadImage(mw,"logo_gel.png") == \r
+ MagickFalse) {<br> // Handle \r
+ the error<br> }</p></blockquote>\r
+ <p align="left">You should note that there are a lot of \r
+ MagickWand functions which are declared as returning a boolean result \r
+ but which will \r
+ always return MagickTrue and are therefore not worth checking. \r
+ This is particularly true with the DrawingWand commands.\r
+ For example, even if DrawSetFont \r
+ doesn't find the font you specify, it will return MagickTrue because it will set \r
+ the font to your default system font.</p>\r
+\r
+\r
+\r
+ <p align="left">If you haven't used MagickWand \r
+ before, you should start with something easy such as this:\r
+ <br><FONT "SIZE=4"><br> <FONT COLOR="#000000">•</FONT> <!-- C!logo_1.c!C --> <a href="logo_1.htm">logo_1.c</a> \r
+ A simple starter. Convert the builtin logo: image to JPG.</FONT</p>\r
+ <p align="left">\r
+ It is easy to see that to make this convert \r
+ one of your own input files to another format you just replace "logo:" \r
+ with your input filename and replace "logo.jpg" with whatever output filename you \r
+ wish.</p>\r
+ <p align="left">The MagickReadImage function is very versatile. It will \r
+ accept a website URL which links to an image somewhere on the internet or \r
+ it can generate a plain coloured canvas using the "xc:" filename \r
+ convention. E.G. "xc:red" will create a red canvas and "xc:none" will \r
+ create a transparent canvas. If you use the "xc:" format you will usually \r
+ precede the read function with a call to MagickSetSize otherwise you will \r
+ get a 1x1 pixel image. It is worthwhile to read the "pseudo Image" and "Built-in Images" sections near the bottom of the\r
+ <a href="http://imagemagick.org/script/formats.php">ImageMagick Formats</a> page to see what other pseudo files are available.</p>\r
+ <p align="left">\r
+ Just in case you are deciding whether to use MagickCore instead of MagickWand, first\r
+ look at the simple example I showed in the previous paragraph and then look at\r
+ the equivalent written for MagickCore:\r
+ <br><FONT "SIZE=4"><br> <FONT COLOR="#000000">•</FONT> <!-- C!MagickCore.c!C --> <a href="MagickCore.htm">MagickCore.c</a> \r
+ The simple starter program written for MagickCore.</FONT></p>\r
+ <p align="left"> I think you'll \r
+ agree that even in this simple example, the MagickWand version is much easier to\r
+ read and write. \r
+ </p>\r
+\r
+ <p align="left" style="FONT-SIZE: 150%; COLOR: red">All of this code is provided AS IS with NO warranty or guarantee of any kind</p>\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: black">Each image is shown on a gray background to show transparent images better </p>\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: black">Here's an <a href="code_index.htm">INDEX</a> of the MagickWand functions used in each example</p> \r
+ \r
+ <!--\r
+ <TABLE ALIGN="CENTER" CELLPADDING="2">\r
+ <TR>\r
+ <TD>Resize an image to 50% using a Lanczos filter and save as high-quality JPG</TD>\r
+ </TR>\r
+ <TR>\r
+ <TD><a href="resize.htm">resize.c</a>\r
+ </TD>\r
+ </TR>\r
+ </TABLE>\r
+-->\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Resize an image to 50% using a Lanczos filter and save as high-quality JPG\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!resize.c!C --> <a href="resize.htm">resize.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_resize.jpg!I --> <a href="logo_resize.htm">Image</a>\r
+\r
+\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Extend the canvas around an image.\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!extent.c!C --> <a href="extent.htm">extent.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_extent.jpg!I --> <a href="logo_extent.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Simple floodfill to change an image's white background to transparent.\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!floodfill.c!C --> <a href="floodfill.htm">floodfill.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_paintflood.png!I --> <a href="logo_paintflood.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Slightly more complex floodfill (similar to third example in <a href="http://www.imagemagick.org/Usage/masking/#floodfill">Masking Simple Backgrounds</a>)\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!cyclops.c!C --> <a href="cyclops.htm">cyclops.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!cyclops_sm_flood.png!I --> <a href="cyclops_sm_flood.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Using a <a href="http://www.imagemagick.org/Usage/channels/#masked_compose">Clip Mask</a> to Limit the Composed Area\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!clipmask.c!C --> <a href="clipmask.htm">clipmask.c</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Change *all* white pixels to be transparent - we also get the wizard's beard!.\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!trans_paint.c!C --> <a href="trans_paint.htm">trans_paint.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_transpaint.png!I --> <a href="logo_transpaint.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Draw shapes: circle, polygon, rounded rectangle, rotated and translated ellipse, line\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!draw_shapes.c!C --> <a href="draw_shapes.htm">draw_shapes.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!chart_test.jpg!I --> <a href="chart_test.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Eight text effects in one function\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!text_effects.c!C --> <a href="text_effects.htm">text_effects.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!text_shadow.png!I --> <a href="text_shadow.htm">Shadow</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!text_pattern.png!I --> <a href="text_pattern.htm">Pattern</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!text_arc.png!I --> <a href="text_arc.htm">Arc</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!text_bevel.png!I --> <a href="text_bevel.htm">Bevel</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!text_plain.png!I --> <a href="text_plain.htm">Plain</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!text_barrel.png!I --> <a href="text_barrel.htm">Barrel</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!text_polar.png!I --> <a href="text_polar.htm">Polar</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!text_shepards.png!I --> <a href="text_shepards.htm">Shepards</a>\r
+ \r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Fun with fontmetrics!\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!fontmetrics.c!C --> <a href="fontmetrics.htm">fontmetrics.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!metric1.gif!I --> <a href="metric1.htm">Image</a>\r
+ \r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Create rounded rectangle mask similar to the <a href="http://www.imagemagick.org/Usage/thumbnails/#rounded_border">ROUNDED BORDERS</a> example.\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!round_mask.c!C --> <a href="round_mask.htm">round_mask.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!mask_result.png!I --> <a href="mask_result.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Create a tileable image from an input image.\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!make_tile.c!C --> <a href="make_tile.htm">make_tile.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!tile_plasma.png!I --> <a href="tile_plasma.htm">Plasma</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!tile_random.png!I --> <a href="tile_random.htm">Random</a>\r
+ \r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">The <a href="http://www.imagemagick.org/Usage/advanced/#3d-logos-2">\r
+ Better 3-D Logo Generation</a> Example\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!3dlogo.c!C --> <a href="3dlogo.htm">3dlogo.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_shadow_3D.png!I --> <a href="logo_shadow_3D.htm">Shadow</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_bg_3D.jpg!I --> <a href="logo_bg_3D.htm">Background</a>\r
+ \r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">The <a href="http://www.imagemagick.org/Usage/advanced/#gel_effects">\r
+ "Gel" Effects</a> Example\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!gel.c!C --> <a href="gel.htm">gel.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!gel_button.png!I --> <a href="gel_button.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Add a reflection below an image - fade the reflection to transparent using CopyOpacity.\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!reflect.c!C --> <a href="reflect.htm">reflect.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_reflect.png!I --> <a href="logo_reflect.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Four examples of using MagickDistortImage to do affine transformations\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!affine.c!C --> <a href="affine.htm">affine.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_affine_1.jpg!I --> <a href="logo_affine_1.htm">Image</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_affine_2.jpg!I --> <a href="logo_affine_2.htm">Image</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_affine_3.jpg!I --> <a href="logo_affine_3.htm">Image</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!rotgrad_2.png!I --> <a href="rotgrad_2.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Using PixelIterators to create a grayscale gradient \r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!grayscale.c!C --> <a href="grayscale.htm">grayscale.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!bits_demo.gif!I --> <a href="bits_demo.htm">Image</a>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Using PixelIterators to read and create images and also do HSL/HSB colourspace conversion \r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!modulate.c!C --> <a href="modulate.htm">modulate.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_hsl.jpg!I --> <a href="logo_hsl.htm">Image</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_hsb.jpg!I --> <a href="logo_hsb.htm">Image</a>\r
+\r
+ </p>\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Convert a 2D image to pseudo-3D \r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!landscape_3d.c!C --> <a href="landscape_3d.htm">landscape_3d.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!3d_fractal.jpg!I --> <a href="3d_fractal.htm">Image</a>\r
+ </p>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Anthony's tilt-shift example \r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!tilt_shift.c!C --> <a href="tilt_shift.htm">tilt_shift.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!beijing_md.jpg!I --> <a href="beijing_md.htm">Input Image</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!beijing_model.jpg!I --> <a href="beijing_model.htm">Output Image</a>\r
+ </p>\r
+\r
+ </p>\r
+<!-- NOTE THAT source code and image files CAN'T HAVE THE SAME ROOTNAME!! -->\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Change the colour of one pixel in the logo: built-in image\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!pixel_mod.c!C --> <a href="pixel_mod.htm">pixel_mod.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!logo_pixel.gif!I --> <a href="logo_pixel.htm">logo_pixel.gif</a>\r
+ </p>\r
+\r
+ <p align="left" style="FONT-SIZE: 120%; COLOR: red">Adding a Static Background to a Cleared Frame Animation \r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- C!bunny.c!C --> <a href="bunny.htm">bunny.c</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!bunny_grass.gif!I --> <a href="bunny_grass.htm">Background Image</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!bunny_anim.gif!I --> <a href="bunny_anim.htm">Animation</a>\r
+ <br> <FONT COLOR="#000000">•</FONT> <!-- I!bunny_bgnd.gif!I --> <a href="bunny_bgnd.htm">Output Image</a>\r
+ </p>\r
+ \r
+ <br>\r
+ </td>\r
+</tr>\r
+\r
+ <tr>\r
+ <td > </td></tr></table></p>\r
+ \r
+\r
+<p> </p>\r
+<p> </p>\r
+<p align="center">If you have any comments, send them to: <img src="elsup_hotmail_24.gif" border=0></p>\r
+<p align="center">or send me a private message on the ImageMagick Forum</p>\r
+<p> </p>\r
+<p align="center"><font size="2"><!-- <a href="http://www.solutionsoft.com/w2w.htm" target="_top"><img height="2" alt="word to html converter" hspace="0" src="b.gif" width="2" border="0" ></a> \r
+<a href="http://www.solutionsoft.com/htmlhelp.htm" target="_top"><img height="2" alt="html help workshop" hspace="0" src="b.gif" width="2" border="0" ></a>\r
+-->\r
+</p> \r
+\r
+</body>\r
+</html>\r
--- /dev/null
+\r
+\r
+\r
+\r
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8" >
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" >
+ <title>Convert, Edit, Or Compose Bitmap Images @ ImageMagick</title>
+ <meta name="application-name" content="ImageMagick">
+ <meta name="description" content="ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.">
+ <meta name="application-url" content="https://www.imagemagick.org">
+ <meta name="generator" content="PHP">
+ <meta name="keywords" content="convert, edit, or, compose, bitmap, images, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert">
+ <meta name="rating" content="GENERAL">
+ <meta name="robots" content="INDEX, FOLLOW">
+ <meta name="generator" content="ImageMagick Studio LLC">
+ <meta name="author" content="ImageMagick Studio LLC">
+ <meta name="revisit-after" content="2 DAYS">
+ <meta name="resource-type" content="document">
+ <meta name="copyright" content="Copyright (c) 1999-2017 ImageMagick Studio LLC">
+ <meta name="distribution" content="Global">
+ <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4">
+ <link href="https://www.imagemagick.org/script/index.php" rel="canonical">
+ <link href="/script/../image/wand.png" rel="icon">
+ <link href="/script/../image/wand.ico" rel="shortcut icon">
+ <link href="/script/../assets/magick-css.php" rel="stylesheet">
+</head>
+<body>
+ <header>
+ <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
+ <a class="navbar-brand" href="/"><img class="d-block" id="logo" name="ImageMagick" alt="ImageMagick" width="32" height="32" src="/script/../image/wand.ico"/></a>
+ <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+
+ <div class="navbar-collapse collapse" id="navbarsExampleDefault" style="">
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item active">
+ <a class="nav-link" href="/script/../index.php">Home <span class="sr-only">(current)</span></a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/download.php">Download</a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/command-line-tools.php">Tools</a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/command-line-processing.php">Command-line</a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/resources.php">Resources</a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/develop.php">Develop</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" target="_blank" href="https://www.imagemagick.org/discourse-server/">Community</a>
+ </li>
+ </ul>
+ <form class="form-inline my-2 my-lg-0" action="/script/../script/search.php">
+ <input class="form-control mr-sm-2" type="text" name="q" placeholder="Search" aria-label="Search">
+ <button class="btn btn-outline-success my-2 my-sm-0" type="submit" name="sa">Search</button>
+ </form>
+ </div>
+ </nav>
+ <div class="container">
+ <script async="async" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle"
+ style="display:block"
+ data-ad-client="ca-pub-3129977114552745"
+ data-ad-slot="6345125851"
+ data-ad-format="auto"></ins>
+ <script>
+ (adsbygoogle = window.adsbygoogle || []).push({});
+ </script>
+ </div>
+ </header>
+ <main role="main" class="container">
+ <div class="magick-template">
+<div class="magick-header">
+<p class="text-center"><a href="#features">Features and Capabilities</a> • <a href="#news">News</a> • <a href="#community">Community</a></p>
+
+<p class="lead magick-description"><a href="/script/../image/wizard.png" title="And Now a Touch of Magick"><img class="img-fluid magick-icon" id="logo" alt="And Now a Touch of Magick" width="265" height="352" src="/script/../image/wizard.jpg" /></a>
+Use ImageMagick<sup><a href="http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=78333969">®</a></sup> to create, edit, compose, or convert bitmap images. It can read and write images in a variety of <a href="/script/../script/formats.php">formats</a> (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, <a href="/script/../script/motion-picture.php">DPX</a>, <a href="/script/../script/high-dynamic-range.php">EXR</a>, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.</p>
+
+<p>The functionality of ImageMagick is typically utilized from the <a href="/script/../script/command-line-processing.php">command-line</a> or you can use the features from programs written in your favorite language. Choose from these interfaces: <a href="/script/../script/develop.php#ada">G2F</a> (Ada), <a href="/script/../script/develop.php#c">MagickCore</a> (C), <a href="/script/../script/develop.php#c">MagickWand</a> (C), <a href="/script/../script/develop.php#ch">ChMagick</a> (Ch), <a href="/script/../script/develop.php#com_">ImageMagickObject</a> (COM+), <a href="/script/../script/develop.php#c__">Magick++</a> (C++), <a href="/script/../script/develop.php#java">JMagick</a> (Java), <a href="/script/../script/develop.php#julia">JuliaIO</a> (Julia), <a href="/script/../script/develop.php#lisp">L-Magick</a> (Lisp), <a href="/script/../script/develop.php#lua">Lua</a> (LuaJIT), <a href="/script/../script/develop.php#neko">NMagick</a> (Neko/haXe), <a href="/script/../script/develop.php#dot-net">Magick.NET</a> (.NET), <a href="/script/../script/develop.php#pascal">PascalMagick</a> (Pascal), <a href="/script/../script/develop.php#perl">PerlMagick</a> (Perl), <a href="/script/../script/develop.php#php">MagickWand for PHP</a> (PHP), <a href="/script/../script/develop.php#php">IMagick</a> (PHP), <a href="/script/../script/develop.php#python">PythonMagick</a> (Python), <a href="/script/../script/develop.php#r">magick</a> (R), <a href="/script/../script/develop.php#ruby">RMagick</a> (Ruby), or <a href="/script/../script/develop.php#tcl">TclMagick</a> (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and <var>automagically</var>.</p>
+<p>ImageMagick utilizes multiple computational threads to increase performance and can read, process, or write mega-, giga-, or tera-pixel image sizes.</p>
+<p>ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you may use, copy, modify, and distribute in both open and proprietary applications. It is distributed under the Apache 2.0 <a href="https://www.imagemagick.org/script/license.php">license</a>.</p>
+
+<p>The ImageMagick development process ensures a stable API and <a href="https://abi-laboratory.pro/tracker/timeline/imagemagick/">ABI</a>. Before each ImageMagick release, we perform a comprehensive security assessment that includes <a href="https://github.com/google/sanitizers/wiki/AddressSanitizer">memory error</a> and <a href="https://github.com/google/sanitizers/wiki/ThreadSanitizer">thread data race</a> detection to help prevent security vulnerabilities.</p>
+
+<p>The current release is ImageMagick <a href="/script/../script/download.php">7.0.7-18</a>. It runs on <a href="/script/../script/download.php#unix">Linux</a>, <a href="/script/../script/download.php#windows">Windows</a>, <a href="/script/../script/download.php#macosx">Mac Os X</a>, <a href="/script/../script/download.php#iOS">iOS</a>, Android OS, and others.</p>
+
+<p>The authoritative ImageMagick web site is <a href="https://www.imagemagick.org/">https://www.imagemagick.org</a>. The authoritative source code repository is <a href="https://github.com/ImageMagick">https://github.com/ImageMagick</a>. We maintain a source code mirror at <a href="https://gitlab.com/ImageMagick">https://gitlab.com/ImageMagick</a>.</p>
+
+<p>We continue to maintain the legacy release of ImageMagick, version 6, at <a href="https://legacy.imagemagick.org/">https://legacy.imagemagick.org</a>.</p>
+
+<h2 class="magick-post-title"><a class="anchor" id="features"></a>Features and Capabilities</h2>
+<p>Here are just a few <a href="/script/../script/examples.php">examples</a> of what ImageMagick can do for you:</p>
+<div class="table-responsive">
+<table class="table table-sm table-striped">
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/anim_basics/">Animation</a></td>
+ <td>create a GIF animation sequence from a group of images.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/color-management.php">Color management</a></td>
+ <td>accurate color management with color profiles or in lieu of-- built-in gamma compression or expansion as demanded by the colorspace.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/command-line-processing.php">Command-line processing</a></td>
+ <td>utilize ImageMagick from the command-line.</td>
+ </tr>
+ <tr>
+ <td><a href="https://en.wikipedia.org/wiki/Complex_text_layout">Complex text layout</a></td>
+ <td>bidirectional text support and shaping.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/composite.php">Composite</a></td>
+ <td>overlap one image over another.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/connected-components.php">Connected component labeling</a></td>
+ <td>uniquely label connected regions in an image.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/crop/">Decorate</a></td>
+ <td>add a border or frame to an image.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/transform/#vision">Delineate image features</a></td>
+ <td><a href="https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=25405">Canny edge detection</a>, <a href="https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=25476">Hough lines</a>.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/fourier/">Discrete Fourier transform</a></td>
+ <td>implements the forward and inverse <a href="https://en.wikipedia.org/wiki/Discrete_Fourier_transform">DFT</a>.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/distribute-pixel-cache.php">Distributed pixel cache</a></td>
+ <td>offload intermediate pixel storage to one or more remote servers.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/draw/">Draw</a></td>
+ <td>add shapes or text to an image.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/cipher.php">Encipher or decipher an image</a></td>
+ <td>convert ordinary images into unintelligible gibberish and back again.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/convert.php">Format conversion</a></td>
+ <td>convert an image from one <a href="/script/../script/formats.php">format </a> to another (e.g. PNG to JPEG).</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/distorts/">Generalized pixel distortion</a></td>
+ <td>correct for, or induce image distortions including perspective.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/architecture.php#distributed">Heterogeneous distributed processing</a></td>
+ <td>certain algorithms are <a href="/script/../script/opencl.php">OpenCL</a>-enabled to take advantage of speed-ups offered by executing in concert across heterogeneous platforms consisting of CPUs, GPUs, and other processors.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/high-dynamic-range.php">High dynamic-range images</a></td>
+ <td>accurately represent the wide range of intensity levels found in real scenes ranging from the brightest direct sunlight to the deepest darkest shadows.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/fx.php">Image calculator</a></td>
+ <td>apply a mathematical expression to an image or image channels.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/gradient.php">Image gradients</a></td>
+ <td>create a gradual blend of two colors whose shape is horizontal, vertical, circular, or elliptical.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/identify.php">Image identification</a></td>
+ <td>describe the format and attributes of an image.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/download.php#iOS">ImageMagick on the iPhone</a></td>
+ <td>convert, edit, or compose images on your <a href="https://www.apple.com/ios/">iOS</a> device such as the iPhone or iPad.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/architecture.php#tera-pixel">Large image support</a></td>
+ <td>read, process, or write mega-, giga-, or tera-pixel image sizes.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/montage.php">Montage</a></td>
+ <td>juxtapose image thumbnails on an image canvas.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/morphology/">Morphology of shapes</a></td>
+ <td>extract features, describe shapes, and recognize patterns in images.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/motion-picture.php">Motion picture support</a></td>
+ <td>read and write the common image formats used in digital film work.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/transform/#vision">Noise and color reduction</a></td>
+ <td><a href="https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=26480">Kuwahara Filter</a>, <a href="https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=25504">mean-shift</a>.</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.fmwconcepts.com/misc_tests/perceptual_hash_test_results_510/index.html">Perceptual hash</a></td>
+ <td>map visually identical images to the same or similar hash-- useful in image retrieval, authentication, indexing, or copy detection as well as digital watermarking.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/blur/">Special effects</a></td>
+ <td>blur, sharpen, threshold, or tint an image.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/text/">Text & comments</a></td>
+ <td>insert descriptive or artistic text in an image.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/architecture.php#threads">Threads of execution support</a></td>
+ <td>ImageMagick is thread safe and most internal algorithms execute in <a href="/script/../script/openmp.php">parallel</a> to take advantage of speed-ups offered by multicore processor chips.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/resize/">Transform</a></td>
+ <td>resize, rotate, deskew, crop, flip or trim an image.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/masking/">Transparency</a></td>
+ <td>render portions of an image invisible.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/architecture.php#virtual-pixels">Virtual pixel support</a></td>
+ <td>convenient access to pixels outside the image boundaries.</td>
+ </tr>
+</table>
+</div>
+
+<p><a href="https://www.imagemagick.org/Usage/">Examples of ImageMagick Usage</a> shows how to use ImageMagick from the <a href="/script/../script/command-line-processing.php">command-line</a> to accomplish any of these tasks and much more. Also, see <a href="http://www.fmwconcepts.com/imagemagick/">Fred's ImageMagick Scripts</a>: a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations. With <a href="https://github.com/dlemstra/Magick.NET">Magick.NET</a>, use ImageMagick without having to install ImageMagick on your server or desktop.</p>
+
+<h2 class="magick-post-title"><a class="anchor" id="news"></a>News</h2>
+
+<p>Now that ImageMagick version 7 is released, we continue to maintain the legacy release of ImageMagick, version 6, at <a href="https://legacy.imagemagick.org/">https://legacy.imagemagick.org</a>. Learn how ImageMagick version 7 differs from previous versions with our <a href="/script/../script/porting.php">porting guide</a>.</p>
+
+<p>ImageMagick best practices <strong>strongly</strong> encourages you to configure a <a href="/script/../script/security-policy.php">security policy</a> that suits your local environment.</p>
+
+<p>As an analog to linear (RGB) and non-linear (sRGB) color colorspaces, as of ImageMagick 7.0.7-17, we introduce the LinearGray colorspace. Gray is non-linear grayscale and LinearGray is linear (e.g. -colorspace linear-gray).</p>
+
+<p>Want more performance from ImageMagick? Try these options:</p>
+
+<ul>
+<li>Add more memory to your system, see <a href="/script/../script/architecture.php#cache">the pixel cache</a>;</li>
+<li>Add more cores to your system (up to 20), see <a href="/script/../script/architecture.php#threads">threads of execution support</a>;</li>
+<li>push large images to a solid-state drive, see <a href="/script/../script/architecture.php#tera-pixel">large image support</a>.</li>
+</ul>
+<p>If these options are prohibitive, you can reduce the quality of the image results. The default build is Q16 HDRI. If you disable <a href="/script/../script/high-dynamic-range.php">HDRI</a>, you use half the memory and instead of predominately floating point operations, you use the typically more efficient integer operations. The tradeoff is reduced percision and you cannot process out of range pixel values (e.g. negative). If you build the Q8 non-HDRI version of ImageMagick, you again reduce the memory requirements in half-- and once again there is a tradeoff, even less percision and no out of range pixel values. For a Q8 non-HDRI build of ImageMagick, use these <code>configure</code> script options: <code>--with-quantum-depth=8 --disable-hdri</code>.</p>
+
+<h2 class="magick-post-title"><a class="anchor" id="community"></a>Community</h2>
+<p>To join the ImageMagick community, try the <a target="_blank" href="https://www.imagemagick.org/discourse-server/">discourse server</a>. You can review questions or comments (with informed responses) posed by ImageMagick users or ask your own questions. If you want to contribute image processing algorithms, other enhancements, or bug fixes, open an <a href="https://github.com/ImageMagick/ImageMagick/issues">issue</a>. </p>
+</div>
+ </div>
+ </main><!-- /.container -->
+ <footer class="magick-footer">
+ <p><a href="/script/../script/security-policy.php">Security</a> •
+ <a href="/script/../script/architecture.php">Architecture</a> •
+ <a href="/script/../script/links.php">Related</a> •
+ <a href="/script/../script/sitemap.php">Sitemap</a>
+
+ <a href="#"><img class="d-inline" id="logo" alt="And Now a Touch of Magick" width="16" height="16" src="/script/../image/wand.ico"/></a>
+
+ <a href="http://pgp.mit.edu/pks/lookup?op=get&search=0x89AB63D48277377A">Public Key</a> •
+ <a href="/script/../script/support.php">Donate</a> •
+ <a href="/script/../script/contact.php">Contact Us</a>
+ <br/>
+ <small>© 1999-2018 ImageMagick Studio LLC</small></p>
+ </footer>
+
+ <!-- Javascript assets -->
+ <script src="/script/../assets/magick-js.php" crossorigin="anonymous"></script>
+ <script>window.jQuery || document.write('<script src="/script/../assets/jquery.min.js"><\/script>')</script>
+</body>
+</html>
+<!-- Magick Cache 31st December 2017 14:33 -->
\ No newline at end of file
--- /dev/null
+\r
+\r
+\r
+\r
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8" >
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" >
+ <title>Convert, Edit, Or Compose Bitmap Images @ ImageMagick</title>
+ <meta name="application-name" content="ImageMagick">
+ <meta name="description" content="ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.">
+ <meta name="application-url" content="https://www.imagemagick.org">
+ <meta name="generator" content="PHP">
+ <meta name="keywords" content="convert, edit, or, compose, bitmap, images, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert">
+ <meta name="rating" content="GENERAL">
+ <meta name="robots" content="INDEX, FOLLOW">
+ <meta name="generator" content="ImageMagick Studio LLC">
+ <meta name="author" content="ImageMagick Studio LLC">
+ <meta name="revisit-after" content="2 DAYS">
+ <meta name="resource-type" content="document">
+ <meta name="copyright" content="Copyright (c) 1999-2017 ImageMagick Studio LLC">
+ <meta name="distribution" content="Global">
+ <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4">
+ <link href="https://www.imagemagick.org/script/index.php" rel="canonical">
+ <link href="/script/../image/wand.png" rel="icon">
+ <link href="/script/../image/wand.ico" rel="shortcut icon">
+ <link href="/script/../assets/magick-css.php" rel="stylesheet">
+</head>
+<body>
+ <header>
+ <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
+ <a class="navbar-brand" href="/"><img class="d-block" id="logo" name="ImageMagick" alt="ImageMagick" width="32" height="32" src="/script/../image/wand.ico"/></a>
+ <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+
+ <div class="navbar-collapse collapse" id="navbarsExampleDefault" style="">
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item active">
+ <a class="nav-link" href="/script/../index.php">Home <span class="sr-only">(current)</span></a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/download.php">Download</a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/command-line-tools.php">Tools</a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/command-line-processing.php">Command-line</a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/resources.php">Resources</a>
+ </li>
+ <li class="nav-item ">
+ <a class="nav-link" href="/script/../script/develop.php">Develop</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" target="_blank" href="https://www.imagemagick.org/discourse-server/">Community</a>
+ </li>
+ </ul>
+ <form class="form-inline my-2 my-lg-0" action="/script/../script/search.php">
+ <input class="form-control mr-sm-2" type="text" name="q" placeholder="Search" aria-label="Search">
+ <button class="btn btn-outline-success my-2 my-sm-0" type="submit" name="sa">Search</button>
+ </form>
+ </div>
+ </nav>
+ <div class="container">
+ <script async="async" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle"
+ style="display:block"
+ data-ad-client="ca-pub-3129977114552745"
+ data-ad-slot="6345125851"
+ data-ad-format="auto"></ins>
+ <script>
+ (adsbygoogle = window.adsbygoogle || []).push({});
+ </script>
+ </div>
+ </header>
+ <main role="main" class="container">
+ <div class="magick-template">
+<div class="magick-header">
+<p class="text-center"><a href="#features">Features and Capabilities</a> • <a href="#news">News</a> • <a href="#community">Community</a></p>
+
+<p class="lead magick-description"><a href="/script/../image/wizard.png" title="And Now a Touch of Magick"><img class="img-fluid magick-icon" id="logo" alt="And Now a Touch of Magick" width="265" height="352" src="/script/../image/wizard.jpg" /></a>
+Use ImageMagick<sup><a href="http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=78333969">®</a></sup> to create, edit, compose, or convert bitmap images. It can read and write images in a variety of <a href="/script/../script/formats.php">formats</a> (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, <a href="/script/../script/motion-picture.php">DPX</a>, <a href="/script/../script/high-dynamic-range.php">EXR</a>, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.</p>
+
+<p>The functionality of ImageMagick is typically utilized from the <a href="/script/../script/command-line-processing.php">command-line</a> or you can use the features from programs written in your favorite language. Choose from these interfaces: <a href="/script/../script/develop.php#ada">G2F</a> (Ada), <a href="/script/../script/develop.php#c">MagickCore</a> (C), <a href="/script/../script/develop.php#c">MagickWand</a> (C), <a href="/script/../script/develop.php#ch">ChMagick</a> (Ch), <a href="/script/../script/develop.php#com_">ImageMagickObject</a> (COM+), <a href="/script/../script/develop.php#c__">Magick++</a> (C++), <a href="/script/../script/develop.php#java">JMagick</a> (Java), <a href="/script/../script/develop.php#julia">JuliaIO</a> (Julia), <a href="/script/../script/develop.php#lisp">L-Magick</a> (Lisp), <a href="/script/../script/develop.php#lua">Lua</a> (LuaJIT), <a href="/script/../script/develop.php#neko">NMagick</a> (Neko/haXe), <a href="/script/../script/develop.php#dot-net">Magick.NET</a> (.NET), <a href="/script/../script/develop.php#pascal">PascalMagick</a> (Pascal), <a href="/script/../script/develop.php#perl">PerlMagick</a> (Perl), <a href="/script/../script/develop.php#php">MagickWand for PHP</a> (PHP), <a href="/script/../script/develop.php#php">IMagick</a> (PHP), <a href="/script/../script/develop.php#python">PythonMagick</a> (Python), <a href="/script/../script/develop.php#r">magick</a> (R), <a href="/script/../script/develop.php#ruby">RMagick</a> (Ruby), or <a href="/script/../script/develop.php#tcl">TclMagick</a> (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and <var>automagically</var>.</p>
+<p>ImageMagick utilizes multiple computational threads to increase performance and can read, process, or write mega-, giga-, or tera-pixel image sizes.</p>
+<p>ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you may use, copy, modify, and distribute in both open and proprietary applications. It is distributed under the Apache 2.0 <a href="https://www.imagemagick.org/script/license.php">license</a>.</p>
+
+<p>The ImageMagick development process ensures a stable API and <a href="https://abi-laboratory.pro/tracker/timeline/imagemagick/">ABI</a>. Before each ImageMagick release, we perform a comprehensive security assessment that includes <a href="https://github.com/google/sanitizers/wiki/AddressSanitizer">memory error</a> and <a href="https://github.com/google/sanitizers/wiki/ThreadSanitizer">thread data race</a> detection to help prevent security vulnerabilities.</p>
+
+<p>The current release is ImageMagick <a href="/script/../script/download.php">7.0.7-18</a>. It runs on <a href="/script/../script/download.php#unix">Linux</a>, <a href="/script/../script/download.php#windows">Windows</a>, <a href="/script/../script/download.php#macosx">Mac Os X</a>, <a href="/script/../script/download.php#iOS">iOS</a>, Android OS, and others.</p>
+
+<p>The authoritative ImageMagick web site is <a href="https://www.imagemagick.org/">https://www.imagemagick.org</a>. The authoritative source code repository is <a href="https://github.com/ImageMagick">https://github.com/ImageMagick</a>. We maintain a source code mirror at <a href="https://gitlab.com/ImageMagick">https://gitlab.com/ImageMagick</a>.</p>
+
+<p>We continue to maintain the legacy release of ImageMagick, version 6, at <a href="https://legacy.imagemagick.org/">https://legacy.imagemagick.org</a>.</p>
+
+<h2 class="magick-post-title"><a class="anchor" id="features"></a>Features and Capabilities</h2>
+<p>Here are just a few <a href="/script/../script/examples.php">examples</a> of what ImageMagick can do for you:</p>
+<div class="table-responsive">
+<table class="table table-sm table-striped">
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/anim_basics/">Animation</a></td>
+ <td>create a GIF animation sequence from a group of images.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/color-management.php">Color management</a></td>
+ <td>accurate color management with color profiles or in lieu of-- built-in gamma compression or expansion as demanded by the colorspace.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/command-line-processing.php">Command-line processing</a></td>
+ <td>utilize ImageMagick from the command-line.</td>
+ </tr>
+ <tr>
+ <td><a href="https://en.wikipedia.org/wiki/Complex_text_layout">Complex text layout</a></td>
+ <td>bidirectional text support and shaping.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/composite.php">Composite</a></td>
+ <td>overlap one image over another.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/connected-components.php">Connected component labeling</a></td>
+ <td>uniquely label connected regions in an image.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/crop/">Decorate</a></td>
+ <td>add a border or frame to an image.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/transform/#vision">Delineate image features</a></td>
+ <td><a href="https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=25405">Canny edge detection</a>, <a href="https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=25476">Hough lines</a>.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/fourier/">Discrete Fourier transform</a></td>
+ <td>implements the forward and inverse <a href="https://en.wikipedia.org/wiki/Discrete_Fourier_transform">DFT</a>.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/distribute-pixel-cache.php">Distributed pixel cache</a></td>
+ <td>offload intermediate pixel storage to one or more remote servers.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/draw/">Draw</a></td>
+ <td>add shapes or text to an image.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/cipher.php">Encipher or decipher an image</a></td>
+ <td>convert ordinary images into unintelligible gibberish and back again.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/convert.php">Format conversion</a></td>
+ <td>convert an image from one <a href="/script/../script/formats.php">format </a> to another (e.g. PNG to JPEG).</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/distorts/">Generalized pixel distortion</a></td>
+ <td>correct for, or induce image distortions including perspective.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/architecture.php#distributed">Heterogeneous distributed processing</a></td>
+ <td>certain algorithms are <a href="/script/../script/opencl.php">OpenCL</a>-enabled to take advantage of speed-ups offered by executing in concert across heterogeneous platforms consisting of CPUs, GPUs, and other processors.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/high-dynamic-range.php">High dynamic-range images</a></td>
+ <td>accurately represent the wide range of intensity levels found in real scenes ranging from the brightest direct sunlight to the deepest darkest shadows.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/fx.php">Image calculator</a></td>
+ <td>apply a mathematical expression to an image or image channels.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/gradient.php">Image gradients</a></td>
+ <td>create a gradual blend of two colors whose shape is horizontal, vertical, circular, or elliptical.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/identify.php">Image identification</a></td>
+ <td>describe the format and attributes of an image.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/download.php#iOS">ImageMagick on the iPhone</a></td>
+ <td>convert, edit, or compose images on your <a href="https://www.apple.com/ios/">iOS</a> device such as the iPhone or iPad.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/architecture.php#tera-pixel">Large image support</a></td>
+ <td>read, process, or write mega-, giga-, or tera-pixel image sizes.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/montage.php">Montage</a></td>
+ <td>juxtapose image thumbnails on an image canvas.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/morphology/">Morphology of shapes</a></td>
+ <td>extract features, describe shapes, and recognize patterns in images.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/motion-picture.php">Motion picture support</a></td>
+ <td>read and write the common image formats used in digital film work.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/transform/#vision">Noise and color reduction</a></td>
+ <td><a href="https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=26480">Kuwahara Filter</a>, <a href="https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=25504">mean-shift</a>.</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.fmwconcepts.com/misc_tests/perceptual_hash_test_results_510/index.html">Perceptual hash</a></td>
+ <td>map visually identical images to the same or similar hash-- useful in image retrieval, authentication, indexing, or copy detection as well as digital watermarking.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/blur/">Special effects</a></td>
+ <td>blur, sharpen, threshold, or tint an image.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/text/">Text & comments</a></td>
+ <td>insert descriptive or artistic text in an image.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/architecture.php#threads">Threads of execution support</a></td>
+ <td>ImageMagick is thread safe and most internal algorithms execute in <a href="/script/../script/openmp.php">parallel</a> to take advantage of speed-ups offered by multicore processor chips.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/resize/">Transform</a></td>
+ <td>resize, rotate, deskew, crop, flip or trim an image.</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.imagemagick.org/Usage/masking/">Transparency</a></td>
+ <td>render portions of an image invisible.</td>
+ </tr>
+ <tr>
+ <td><a href="/script/../script/architecture.php#virtual-pixels">Virtual pixel support</a></td>
+ <td>convenient access to pixels outside the image boundaries.</td>
+ </tr>
+</table>
+</div>
+
+<p><a href="https://www.imagemagick.org/Usage/">Examples of ImageMagick Usage</a> shows how to use ImageMagick from the <a href="/script/../script/command-line-processing.php">command-line</a> to accomplish any of these tasks and much more. Also, see <a href="http://www.fmwconcepts.com/imagemagick/">Fred's ImageMagick Scripts</a>: a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations. With <a href="https://github.com/dlemstra/Magick.NET">Magick.NET</a>, use ImageMagick without having to install ImageMagick on your server or desktop.</p>
+
+<h2 class="magick-post-title"><a class="anchor" id="news"></a>News</h2>
+
+<p>Now that ImageMagick version 7 is released, we continue to maintain the legacy release of ImageMagick, version 6, at <a href="https://legacy.imagemagick.org/">https://legacy.imagemagick.org</a>. Learn how ImageMagick version 7 differs from previous versions with our <a href="/script/../script/porting.php">porting guide</a>.</p>
+
+<p>ImageMagick best practices <strong>strongly</strong> encourages you to configure a <a href="/script/../script/security-policy.php">security policy</a> that suits your local environment.</p>
+
+<p>As an analog to linear (RGB) and non-linear (sRGB) color colorspaces, as of ImageMagick 7.0.7-17, we introduce the LinearGray colorspace. Gray is non-linear grayscale and LinearGray is linear (e.g. -colorspace linear-gray).</p>
+
+<p>Want more performance from ImageMagick? Try these options:</p>
+
+<ul>
+<li>Add more memory to your system, see <a href="/script/../script/architecture.php#cache">the pixel cache</a>;</li>
+<li>Add more cores to your system (up to 20), see <a href="/script/../script/architecture.php#threads">threads of execution support</a>;</li>
+<li>push large images to a solid-state drive, see <a href="/script/../script/architecture.php#tera-pixel">large image support</a>.</li>
+</ul>
+<p>If these options are prohibitive, you can reduce the quality of the image results. The default build is Q16 HDRI. If you disable <a href="/script/../script/high-dynamic-range.php">HDRI</a>, you use half the memory and instead of predominately floating point operations, you use the typically more efficient integer operations. The tradeoff is reduced percision and you cannot process out of range pixel values (e.g. negative). If you build the Q8 non-HDRI version of ImageMagick, you again reduce the memory requirements in half-- and once again there is a tradeoff, even less percision and no out of range pixel values. For a Q8 non-HDRI build of ImageMagick, use these <code>configure</code> script options: <code>--with-quantum-depth=8 --disable-hdri</code>.</p>
+
+<h2 class="magick-post-title"><a class="anchor" id="community"></a>Community</h2>
+<p>To join the ImageMagick community, try the <a target="_blank" href="https://www.imagemagick.org/discourse-server/">discourse server</a>. You can review questions or comments (with informed responses) posed by ImageMagick users or ask your own questions. If you want to contribute image processing algorithms, other enhancements, or bug fixes, open an <a href="https://github.com/ImageMagick/ImageMagick/issues">issue</a>. </p>
+</div>
+ </div>
+ </main><!-- /.container -->
+ <footer class="magick-footer">
+ <p><a href="/script/../script/security-policy.php">Security</a> •
+ <a href="/script/../script/architecture.php">Architecture</a> •
+ <a href="/script/../script/links.php">Related</a> •
+ <a href="/script/../script/sitemap.php">Sitemap</a>
+
+ <a href="#"><img class="d-inline" id="logo" alt="And Now a Touch of Magick" width="16" height="16" src="/script/../image/wand.ico"/></a>
+
+ <a href="http://pgp.mit.edu/pks/lookup?op=get&search=0x89AB63D48277377A">Public Key</a> •
+ <a href="/script/../script/support.php">Donate</a> •
+ <a href="/script/../script/contact.php">Contact Us</a>
+ <br/>
+ <small>© 1999-2018 ImageMagick Studio LLC</small></p>
+ </footer>
+
+ <!-- Javascript assets -->
+ <script src="/script/../assets/magick-js.php" crossorigin="anonymous"></script>
+ <script>window.jQuery || document.write('<script src="/script/../assets/jquery.min.js"><\/script>')</script>
+</body>
+</html>
+<!-- Magick Cache 31st December 2017 14:33 -->
\ No newline at end of file
skewness;
(void) GetImageKurtosis(image,&kurtosis,&skewness,exception);
- (void) FormatLocaleString(statistic,MagickPathExtent,"%g",kurtosis);
+ (void) FormatLocaleString(statistic,MagickPathExtent,"%.20g",kurtosis);
}
if (LocaleNCompare(symbol,"maxima",6) == 0)
{
minima;
(void) GetImageRange(image,&minima,&maxima,exception);
- (void) FormatLocaleString(statistic,MagickPathExtent,"%g",maxima);
+ (void) FormatLocaleString(statistic,MagickPathExtent,"%.20g",maxima);
}
if (LocaleNCompare(symbol,"mean",4) == 0)
{
standard_deviation;
(void) GetImageMean(image,&mean,&standard_deviation,exception);
- (void) FormatLocaleString(statistic,MagickPathExtent,"%g",mean);
+ (void) FormatLocaleString(statistic,MagickPathExtent,"%.20g",mean);
}
if (LocaleNCompare(symbol,"minima",6) == 0)
{
minima;
(void) GetImageRange(image,&minima,&maxima,exception);
- (void) FormatLocaleString(statistic,MagickPathExtent,"%g",minima);
+ (void) FormatLocaleString(statistic,MagickPathExtent,"%.20g",minima);
}
if (LocaleNCompare(symbol,"skewness",8) == 0)
{
skewness;
(void) GetImageKurtosis(image,&kurtosis,&skewness,exception);
- (void) FormatLocaleString(statistic,MagickPathExtent,"%g",skewness);
+ (void) FormatLocaleString(statistic,MagickPathExtent,"%.20g",skewness);
}
if (LocaleNCompare(symbol,"standard_deviation",18) == 0)
{
standard_deviation;
(void) GetImageMean(image,&mean,&standard_deviation,exception);
- (void) FormatLocaleString(statistic,MagickPathExtent,"%g",
+ (void) FormatLocaleString(statistic,MagickPathExtent,"%.20g",
standard_deviation);
}
if (channel_mask != UndefinedChannel)
ClearMagickException(exception);
*beta=FxEvaluateSubexpression(fx_info,channel,x,y,++p,depth,beta,
exception);
- (void) FormatLocaleString(numeric,MagickPathExtent,"%g",*beta);
+ (void) FormatLocaleString(numeric,MagickPathExtent,"%.20g",*beta);
(void) DeleteNodeFromSplayTree(fx_info->symbols,subexpression);
(void) AddValueToSplayTree(fx_info->symbols,ConstantString(
subexpression),ConstantString(numeric));
caption_image->background_color=image->border_color;
(void) SetImageBackgroundColor(caption_image,exception);
(void) CloneString(&annotate_info->text,text);
- (void) FormatLocaleString(geometry,MagickPathExtent,"+0+%g",
+ (void) FormatLocaleString(geometry,MagickPathExtent,"+0+%.20g",
metrics.ascent);
if (annotate_info->gravity == UndefinedGravity)
(void) CloneString(&annotate_info->geometry,AcquireString(