13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// This may look like C code, but it is really -*- C++ -*-
23ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
4b6f009f769ad7a6ca2c83d00e06565e64fc65aaddirk// Copyright Dirk Lemstra 2013-2016
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Implementation of Image
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define MAGICKCORE_IMPLEMENTATION  1
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12d4774283661e770ee52d54a7199b7c4d38208c35cristy#include "Magick++/Include.h"
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <cstdlib>
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <string>
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <string.h>
163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <errno.h>
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <math.h>
183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
193ed852eea50f9d4cd633efb8c2b054b8e33c253cristyusing namespace std;
203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include "Magick++/Image.h"
223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include "Magick++/Functions.h"
233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include "Magick++/Pixels.h"
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include "Magick++/Options.h"
253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include "Magick++/ImageRef.h"
263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define AbsoluteValue(x)  ((x) < 0 ? -(x) : (x))
28830e974c2864362a20c44c4a6e915b523cb56c66cristy#define MagickPI  3.14159265358979323846264338327950288419716939937510
293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define DegreesToRadians(x)  (MagickPI*(x)/180.0)
3007f84e72b205d18eb8ad35380af95351d9f0a1a3dirk#define ThrowImageException ThrowPPException(quiet())
313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
321940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport const char *Magick::borderGeometryDefault="6x6+0+0";
331940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport const char *Magick::frameGeometryDefault="25x25+6+6";
341940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport const char *Magick::raiseGeometryDefault="6x6+0+0";
353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
361940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport int Magick::operator == (const Magick::Image &left_,
371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::Image &right_)
383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  // If image pixels and signature are the same, then the image is identical
401940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return((left_.rows() == right_.rows()) &&
411940fe06f035ea32a4ec4df61f6897396877aa3cdirk    (left_.columns() == right_.columns()) &&
421940fe06f035ea32a4ec4df61f6897396877aa3cdirk    (left_.signature() == right_.signature()));
433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
441940fe06f035ea32a4ec4df61f6897396877aa3cdirk
451940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport int Magick::operator != (const Magick::Image &left_,
461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::Image &right_)
473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(!(left_ == right_));
493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
501940fe06f035ea32a4ec4df61f6897396877aa3cdirk
511940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport int Magick::operator > (const Magick::Image &left_,
521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::Image &right_)
533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(!(left_ < right_) && (left_ != right_));
553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
561940fe06f035ea32a4ec4df61f6897396877aa3cdirk
571940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport int Magick::operator < (const Magick::Image &left_,
581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::Image &right_)
593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  // If image pixels are less, then image is smaller
611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return((left_.rows() * left_.columns()) <
621940fe06f035ea32a4ec4df61f6897396877aa3cdirk    (right_.rows() * right_.columns()));
633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
641940fe06f035ea32a4ec4df61f6897396877aa3cdirk
651940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport int Magick::operator >= (const Magick::Image &left_,
661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::Image &right_)
673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return((left_ > right_) || (left_ == right_));
693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
701940fe06f035ea32a4ec4df61f6897396877aa3cdirk
711940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickPPExport int Magick::operator <= (const Magick::Image &left_,
721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::Image &right_)
733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return((left_ < right_) || ( left_ == right_));
753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
771940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(void)
7807f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
801940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
821940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const Blob &blob_)
8307f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
841940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  try
861940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
871940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Initialize, Allocate and Read images
88e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(true);
891940fe06f035ea32a4ec4df61f6897396877aa3cdirk    read(blob_);
90e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(false);
911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
92e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk  catch (const Error&)
931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
941940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Release resources
951940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
961940fe06f035ea32a4ec4df61f6897396877aa3cdirk    throw;
971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1001940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const Blob &blob_,const Geometry &size_)
10107f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  try
1041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1051940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Read from Blob
106e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(true);
1071940fe06f035ea32a4ec4df61f6897396877aa3cdirk    read(blob_, size_);
108e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(false);
1091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
110e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk  catch(const Error&)
1111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1121940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Release resources
1131940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
1141940fe06f035ea32a4ec4df61f6897396877aa3cdirk    throw;
1151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
1163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1181940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const Blob &blob_,const Geometry &size_,
1191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t depth_)
12007f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
1213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  try
1231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1241940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Read from Blob
125e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(true);
1261940fe06f035ea32a4ec4df61f6897396877aa3cdirk    read(blob_,size_,depth_);
127e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(false);
1281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
129e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk  catch(const Error&)
1301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1311940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Release resources
1321940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
1331940fe06f035ea32a4ec4df61f6897396877aa3cdirk    throw;
1341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1371940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const Blob &blob_,const Geometry &size_,
1381940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t depth_,const std::string &magick_)
13907f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
1403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  try
1421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1431940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Read from Blob
144e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(true);
1451940fe06f035ea32a4ec4df61f6897396877aa3cdirk    read(blob_,size_,depth_,magick_);
146e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(false);
1471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
148e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk  catch(const Error&)
1491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1501940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Release resources
1511940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
1521940fe06f035ea32a4ec4df61f6897396877aa3cdirk    throw;
1531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
1543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1561940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const Blob &blob_,const Geometry &size_,
1571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &magick_)
15807f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
1593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  try
1611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1621940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Read from Blob
163e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(true);
1641940fe06f035ea32a4ec4df61f6897396877aa3cdirk    read(blob_,size_,magick_);
165e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(false);
1661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
167e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk  catch(const Error&)
1681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1691940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Release resources
1701940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
1711940fe06f035ea32a4ec4df61f6897396877aa3cdirk    throw;
1721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
1733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1751940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const Geometry &size_,const Color &color_)
17607f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
1773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1783c65c4f062b27f5c5f668e009716bdddf2adf947dirk  // xc: prefix specifies an X11 color string
1793c65c4f062b27f5c5f668e009716bdddf2adf947dirk  std::string imageSpec("xc:");
1803c65c4f062b27f5c5f668e009716bdddf2adf947dirk  imageSpec+=color_;
1811940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18240b3ec0ac359dc0c09d0a1bc28b809bb859cada2dirk  try
18340b3ec0ac359dc0c09d0a1bc28b809bb859cada2dirk  {
184e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(true);
1853c65c4f062b27f5c5f668e009716bdddf2adf947dirk    // Set image size
1863c65c4f062b27f5c5f668e009716bdddf2adf947dirk    size(size_);
1873c65c4f062b27f5c5f668e009716bdddf2adf947dirk
1883c65c4f062b27f5c5f668e009716bdddf2adf947dirk    // Initialize, Allocate and Read images
1893c65c4f062b27f5c5f668e009716bdddf2adf947dirk    read(imageSpec);
190e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(false);
1911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
192e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk  catch(const Error&)
1931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
1941940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Release resources
1951940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
1961940fe06f035ea32a4ec4df61f6897396877aa3cdirk    throw;
1971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
1981940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
1991940fe06f035ea32a4ec4df61f6897396877aa3cdirk
2001940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const Image &image_)
20107f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(image_._imgRef)
2021940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
203debd02e3cb441e34f5b63bbfbf69e404f8135159dirk  _imgRef->increase();
2043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
206fae20619a47497056073e51720a3517d387cc7dedirkMagick::Image::Image(const Image &image_,const Geometry &geometry_)
207fae20619a47497056073e51720a3517d387cc7dedirk  : _imgRef(new ImageRef)
208fae20619a47497056073e51720a3517d387cc7dedirk{
209fae20619a47497056073e51720a3517d387cc7dedirk  const RectangleInfo
210fae20619a47497056073e51720a3517d387cc7dedirk    geometry=geometry_;
211fae20619a47497056073e51720a3517d387cc7dedirk
212fae20619a47497056073e51720a3517d387cc7dedirk  OffsetInfo
213fae20619a47497056073e51720a3517d387cc7dedirk    offset;
214fae20619a47497056073e51720a3517d387cc7dedirk
215fae20619a47497056073e51720a3517d387cc7dedirk  MagickCore::Image
216fae20619a47497056073e51720a3517d387cc7dedirk    *image;
217fae20619a47497056073e51720a3517d387cc7dedirk
218fae20619a47497056073e51720a3517d387cc7dedirk  GetPPException;
219fae20619a47497056073e51720a3517d387cc7dedirk  image=CloneImage(image_.constImage(),geometry_.width(),geometry_.height(),
220fae20619a47497056073e51720a3517d387cc7dedirk    MagickTrue,exceptionInfo);
221fae20619a47497056073e51720a3517d387cc7dedirk  replaceImage(image);
222fae20619a47497056073e51720a3517d387cc7dedirk  _imgRef->options(new Options(*image_.constOptions()));
223fae20619a47497056073e51720a3517d387cc7dedirk  offset.x=0;
224fae20619a47497056073e51720a3517d387cc7dedirk  offset.y=0;
225fae20619a47497056073e51720a3517d387cc7dedirk  (void) CopyImagePixels(image,image_.constImage(),&geometry,&offset,
226fae20619a47497056073e51720a3517d387cc7dedirk    exceptionInfo);
227fae20619a47497056073e51720a3517d387cc7dedirk  ThrowImageException;
228fae20619a47497056073e51720a3517d387cc7dedirk}
229fae20619a47497056073e51720a3517d387cc7dedirk
2301940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const size_t width_,const size_t height_,
2311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &map_,const StorageType type_,const void *pixels_)
23207f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
2333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  try
2351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
236e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(true);
2371940fe06f035ea32a4ec4df61f6897396877aa3cdirk    read(width_,height_,map_.c_str(),type_,pixels_);
238e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(false);
2391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
240e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk  catch(const Error&)
2411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
2421940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Release resources
2431940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
2441940fe06f035ea32a4ec4df61f6897396877aa3cdirk    throw;
2451940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
2463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2481940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(const std::string &imageSpec_)
24907f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef)
2503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  try
2521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
2531940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Initialize, Allocate and Read images
254e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(true);
2551940fe06f035ea32a4ec4df61f6897396877aa3cdirk    read(imageSpec_);
256e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk    quiet(false);
2571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
258e46e7ddcef0f1b6472b1a643c46ba2b2b4fcb929dirk  catch(const Error&)
2591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  {
2601940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Release resources
2611940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
2621940fe06f035ea32a4ec4df61f6897396877aa3cdirk    throw;
2631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  }
2643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2663ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::Image::~Image()
2673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
268debd02e3cb441e34f5b63bbfbf69e404f8135159dirk  if (_imgRef->decrease() == 0)
2691940fe06f035ea32a4ec4df61f6897396877aa3cdirk    delete _imgRef;
2701940fe06f035ea32a4ec4df61f6897396877aa3cdirk
271debd02e3cb441e34f5b63bbfbf69e404f8135159dirk  _imgRef=(Magick::ImageRef *) NULL;
2721940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
2731940fe06f035ea32a4ec4df61f6897396877aa3cdirk
2741940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image& Magick::Image::operator=(const Magick::Image &image_)
2751940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
276debd02e3cb441e34f5b63bbfbf69e404f8135159dirk  if (this != &image_)
2773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
278debd02e3cb441e34f5b63bbfbf69e404f8135159dirk      image_._imgRef->increase();
279debd02e3cb441e34f5b63bbfbf69e404f8135159dirk      if (_imgRef->decrease() == 0)
280debd02e3cb441e34f5b63bbfbf69e404f8135159dirk        delete _imgRef;
2811940fe06f035ea32a4ec4df61f6897396877aa3cdirk
2821940fe06f035ea32a4ec4df61f6897396877aa3cdirk      // Use new image reference
2831940fe06f035ea32a4ec4df61f6897396877aa3cdirk      _imgRef=image_._imgRef;
2843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
2851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(*this);
2867323460d5cd42b6e10481f8fdbbdab7237cffab7dirk}
2877323460d5cd42b6e10481f8fdbbdab7237cffab7dirk
2881940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::adjoin(const bool flag_)
2891940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
2901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
2911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->adjoin(flag_);
2927323460d5cd42b6e10481f8fdbbdab7237cffab7dirk}
2937323460d5cd42b6e10481f8fdbbdab7237cffab7dirk
2941940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::adjoin(void) const
2953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2961940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->adjoin());
2973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2991940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::alpha(const bool matteFlag_)
3003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
3021940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // If matte channel is requested, but image doesn't already have a
3041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // matte channel, then create an opaque matte channel.  Likewise, if
3051940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // the image already has a matte channel but a matte channel is not
3061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // desired, then set the matte channel to opaque.
3071940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if ((matteFlag_ && !constImage()->alpha_trait) ||
3091940fe06f035ea32a4ec4df61f6897396877aa3cdirk      (constImage()->alpha_trait && !matteFlag_))
310e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    SetImageAlpha(image(),OpaqueAlpha,exceptionInfo);
31177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
3121940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->alpha_trait=matteFlag_ ? BlendPixelTrait : UndefinedPixelTrait;
3143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3161940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::alpha(void) const
3173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (constImage()->alpha_trait == BlendPixelTrait)
3191940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(true);
3201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
3211940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(false);
3223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3241940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::alphaColor(const Color &alphaColor_)
3253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
327092a8ea1959d818804462ea79231863dc2e3fd26dirk
3281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (alphaColor_.isValid())
3291940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
330b797b2c96f796f4920c9ee807dc5f47e6f160418dirk      image()->alpha_color=alphaColor_;
331b797b2c96f796f4920c9ee807dc5f47e6f160418dirk      options()->alphaColor(alphaColor_);
3321940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
3331940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
3341940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
3351940fe06f035ea32a4ec4df61f6897396877aa3cdirk      // Set to default matte color
3361940fe06f035ea32a4ec4df61f6897396877aa3cdirk      Color tmpColor("#BDBDBD");
337b797b2c96f796f4920c9ee807dc5f47e6f160418dirk      image()->alpha_color=tmpColor;
338b797b2c96f796f4920c9ee807dc5f47e6f160418dirk      options()->alphaColor(tmpColor);
3391940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
3401940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
341092a8ea1959d818804462ea79231863dc2e3fd26dirk
3421940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Color Magick::Image::alphaColor(void) const
3431940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
344b797b2c96f796f4920c9ee807dc5f47e6f160418dirk  return(Color(constImage()->alpha_color));
3453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3471940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::animationDelay(const size_t delay_)
3483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
3501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->delay=delay_;
3513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
352f27731d206fb6b9b791c0964837f85fa85883ed2dirk
3531940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::animationDelay(void) const
3543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3551940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->delay);
3563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
357f27731d206fb6b9b791c0964837f85fa85883ed2dirk
3581940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::animationIterations(const size_t iterations_)
3593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
3611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->iterations=iterations_;
3621940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
3633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3641940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::animationIterations(void) const
3651940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
3661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->iterations);
3673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
368f27731d206fb6b9b791c0964837f85fa85883ed2dirk
369019efc8c2270c29096a4c8975cde80a84da06ba0dirkvoid Magick::Image::attenuate(const double attenuate_)
370019efc8c2270c29096a4c8975cde80a84da06ba0dirk{
371019efc8c2270c29096a4c8975cde80a84da06ba0dirk  char
372151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy    value[MagickPathExtent];
373019efc8c2270c29096a4c8975cde80a84da06ba0dirk
374019efc8c2270c29096a4c8975cde80a84da06ba0dirk  modifyImage();
375151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy  FormatLocaleString(value,MagickPathExtent,"%.20g",attenuate_);
376019efc8c2270c29096a4c8975cde80a84da06ba0dirk  (void) SetImageArtifact(image(),"attenuate",value);
377019efc8c2270c29096a4c8975cde80a84da06ba0dirk}
378019efc8c2270c29096a4c8975cde80a84da06ba0dirk
3791940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::backgroundColor(const Color &backgroundColor_)
3803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
3823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3831940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (backgroundColor_.isValid())
3841940fe06f035ea32a4ec4df61f6897396877aa3cdirk    image()->background_color=backgroundColor_;
3851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
3861940fe06f035ea32a4ec4df61f6897396877aa3cdirk    image()->background_color=Color();
3873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->backgroundColor(backgroundColor_);
3891940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
3903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3911940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Color Magick::Image::backgroundColor(void) const
3921940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
3931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->backgroundColor());
3943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3961940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::backgroundTexture(const std::string &backgroundTexture_)
397b5e877bd8701bc3f0ac1e9a3679a6cee64c69674cristy{
398b5e877bd8701bc3f0ac1e9a3679a6cee64c69674cristy  modifyImage();
3991940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->backgroundTexture(backgroundTexture_);
400b5e877bd8701bc3f0ac1e9a3679a6cee64c69674cristy}
401b5e877bd8701bc3f0ac1e9a3679a6cee64c69674cristy
4021940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::backgroundTexture(void) const
403b5e877bd8701bc3f0ac1e9a3679a6cee64c69674cristy{
4041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->backgroundTexture());
405b5e877bd8701bc3f0ac1e9a3679a6cee64c69674cristy}
406b5e877bd8701bc3f0ac1e9a3679a6cee64c69674cristy
4071940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::baseColumns(void) const
408ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk{
4091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->magick_columns);
410ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk}
411ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk
4121940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::baseFilename(void) const
413ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk{
4141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(std::string(constImage()->magick_filename));
415ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk}
416ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk
4171940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::baseRows(void) const
418ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk{
4191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->magick_rows);
420ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk}
421ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk
42249dfa4460aa3429cf739805478df9872ca5e2136dirkvoid Magick::Image::blackPointCompensation(const bool flag_)
42349dfa4460aa3429cf739805478df9872ca5e2136dirk{
42449dfa4460aa3429cf739805478df9872ca5e2136dirk  image()->black_point_compensation=(MagickBooleanType) flag_;
42549dfa4460aa3429cf739805478df9872ca5e2136dirk}
42649dfa4460aa3429cf739805478df9872ca5e2136dirk
42749dfa4460aa3429cf739805478df9872ca5e2136dirkbool Magick::Image::blackPointCompensation(void) const
42849dfa4460aa3429cf739805478df9872ca5e2136dirk{
42949dfa4460aa3429cf739805478df9872ca5e2136dirk  return(static_cast<bool>(constImage()->black_point_compensation));
43049dfa4460aa3429cf739805478df9872ca5e2136dirk}
43149dfa4460aa3429cf739805478df9872ca5e2136dirk
4321940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::borderColor(const Color &borderColor_)
433ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk{
434ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk  modifyImage();
4351940fe06f035ea32a4ec4df61f6897396877aa3cdirk
4361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (borderColor_.isValid())
4371940fe06f035ea32a4ec4df61f6897396877aa3cdirk    image()->border_color=borderColor_;
4381940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
4391940fe06f035ea32a4ec4df61f6897396877aa3cdirk    image()->border_color=Color();
4401940fe06f035ea32a4ec4df61f6897396877aa3cdirk
4411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->borderColor(borderColor_);
442ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk}
443ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk
4441940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Color Magick::Image::borderColor(void) const
445ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk{
4461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->borderColor());
447ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk}
448ff9693a0273bd1ff375da6d0488aa70ba7aa84bedirk
4491940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Geometry Magick::Image::boundingBox(void) const
450092a8ea1959d818804462ea79231863dc2e3fd26dirk{
4511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
4521940fe06f035ea32a4ec4df61f6897396877aa3cdirk    bbox;
4531940fe06f035ea32a4ec4df61f6897396877aa3cdirk
4541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
455e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  bbox=GetImageBoundingBox(constImage(),exceptionInfo);
45677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Geometry(bbox));
458092a8ea1959d818804462ea79231863dc2e3fd26dirk}
459092a8ea1959d818804462ea79231863dc2e3fd26dirk
4601940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::boxColor(const Color &boxColor_)
461092a8ea1959d818804462ea79231863dc2e3fd26dirk{
462092a8ea1959d818804462ea79231863dc2e3fd26dirk  modifyImage();
4631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->boxColor(boxColor_);
464092a8ea1959d818804462ea79231863dc2e3fd26dirk}
465092a8ea1959d818804462ea79231863dc2e3fd26dirk
4661940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Color Magick::Image::boxColor(void) const
467f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
4681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->boxColor());
469f27731d206fb6b9b791c0964837f85fa85883ed2dirk}
470f27731d206fb6b9b791c0964837f85fa85883ed2dirk
471f781e34db4b820ba9eacdc8aa04def9bf0cb599fdirkvoid Magick::Image::channelDepth(const ChannelType channel_,
472f781e34db4b820ba9eacdc8aa04def9bf0cb599fdirk  const size_t depth_)
4733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
4751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4765fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
477e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageDepth(image(),depth_,exceptionInfo);
478f781e34db4b820ba9eacdc8aa04def9bf0cb599fdirk  RestorePPChannelMask;
47977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
482f781e34db4b820ba9eacdc8aa04def9bf0cb599fdirksize_t Magick::Image::channelDepth(const ChannelType channel_)
4833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
4851940fe06f035ea32a4ec4df61f6897396877aa3cdirk    channel_depth;
4861940fe06f035ea32a4ec4df61f6897396877aa3cdirk
4871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4885fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
489e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  channel_depth=GetImageDepth(constImage(),exceptionInfo);
490f781e34db4b820ba9eacdc8aa04def9bf0cb599fdirk  RestorePPChannelMask;
49177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4921940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(channel_depth);
4933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4951940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::channels() const
496f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
4971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->number_channels);
498f27731d206fb6b9b791c0964837f85fa85883ed2dirk}
499f27731d206fb6b9b791c0964837f85fa85883ed2dirk
5001940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::classType(const ClassType class_)
501f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
5021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (classType() == PseudoClass && class_ == DirectClass)
5031940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
5041940fe06f035ea32a4ec4df61f6897396877aa3cdirk      // Use SyncImage to synchronize the DirectClass pixels with the
5051940fe06f035ea32a4ec4df61f6897396877aa3cdirk      // color map and then set to DirectClass type.
5061940fe06f035ea32a4ec4df61f6897396877aa3cdirk      modifyImage();
5071940fe06f035ea32a4ec4df61f6897396877aa3cdirk      GetPPException;
508e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk      SyncImage(image(),exceptionInfo);
50977328896b876314656427663695bc7b2c9be3f74dirk      ThrowImageException;
5101940fe06f035ea32a4ec4df61f6897396877aa3cdirk      image()->colormap=(PixelInfo *)RelinquishMagickMemory(image()->colormap);
5111940fe06f035ea32a4ec4df61f6897396877aa3cdirk      image()->storage_class=static_cast<MagickCore::ClassType>(DirectClass);
5121940fe06f035ea32a4ec4df61f6897396877aa3cdirk      return;
5131940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
5141940fe06f035ea32a4ec4df61f6897396877aa3cdirk
5151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (classType() == DirectClass && class_ == PseudoClass)
5161940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
5171940fe06f035ea32a4ec4df61f6897396877aa3cdirk      // Quantize to create PseudoClass color map
5181940fe06f035ea32a4ec4df61f6897396877aa3cdirk      modifyImage();
5191940fe06f035ea32a4ec4df61f6897396877aa3cdirk      quantizeColors(MaxColormapSize);
5201940fe06f035ea32a4ec4df61f6897396877aa3cdirk      quantize();
5211940fe06f035ea32a4ec4df61f6897396877aa3cdirk      image()->storage_class=static_cast<MagickCore::ClassType>(PseudoClass);
5221940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
523f27731d206fb6b9b791c0964837f85fa85883ed2dirk}
524f27731d206fb6b9b791c0964837f85fa85883ed2dirk
5251940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::ClassType Magick::Image::classType(void) const
5263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return static_cast<Magick::ClassType>(constImage()->storage_class);
5283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
5301940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::colorFuzz(const double fuzz_)
5313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
5331940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->fuzz=fuzz_;
5341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->colorFuzz(fuzz_);
5353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
5371940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::colorFuzz(void) const
5383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->colorFuzz());
5403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
5421940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::colorMapSize(const size_t entries_)
543b32b90a7e1ee2275333589072c496b5f69e17feccristy{
5441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (entries_ >MaxColormapSize)
54577328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
5461940fe06f035ea32a4ec4df61f6897396877aa3cdirk      "Colormap entries must not exceed MaxColormapSize");
5471940fe06f035ea32a4ec4df61f6897396877aa3cdirk
548b32b90a7e1ee2275333589072c496b5f69e17feccristy  modifyImage();
5491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
550e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) AcquireImageColormap(image(),entries_,exceptionInfo);
55177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
552b32b90a7e1ee2275333589072c496b5f69e17feccristy}
553b32b90a7e1ee2275333589072c496b5f69e17feccristy
5541940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::colorMapSize(void) const
555f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
5561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!constImage()->colormap)
55777328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
55877328896b876314656427663695bc7b2c9be3f74dirk      "Image does not contain a colormap");
5591940fe06f035ea32a4ec4df61f6897396877aa3cdirk
5601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->colors);
561f27731d206fb6b9b791c0964837f85fa85883ed2dirk}
562f27731d206fb6b9b791c0964837f85fa85883ed2dirk
5631940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::colorSpace(const ColorspaceType colorSpace_)
564f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
5651940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (image()->colorspace == colorSpace_)
5661940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return;
5671940fe06f035ea32a4ec4df61f6897396877aa3cdirk
568f27731d206fb6b9b791c0964837f85fa85883ed2dirk  modifyImage();
5691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
570e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  TransformImageColorspace(image(),colorSpace_,exceptionInfo);
57177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
572d561b30050e85b31ba71c5dc15cc3ab3af403e65dirk}
573d561b30050e85b31ba71c5dc15cc3ab3af403e65dirk
5741940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::ColorspaceType Magick::Image::colorSpace(void) const
575d561b30050e85b31ba71c5dc15cc3ab3af403e65dirk{
5761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return (constImage()->colorspace);
577d561b30050e85b31ba71c5dc15cc3ab3af403e65dirk}
578d561b30050e85b31ba71c5dc15cc3ab3af403e65dirk
5791940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::colorSpaceType(const ColorspaceType colorSpace_)
580d561b30050e85b31ba71c5dc15cc3ab3af403e65dirk{
581d561b30050e85b31ba71c5dc15cc3ab3af403e65dirk  modifyImage();
5821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
583e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageColorspace(image(),colorSpace_,exceptionInfo);
58477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
5851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->colorspaceType(colorSpace_);
586f27731d206fb6b9b791c0964837f85fa85883ed2dirk}
587f27731d206fb6b9b791c0964837f85fa85883ed2dirk
5881940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::ColorspaceType Magick::Image::colorSpaceType(void) const
589f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
5901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->colorspaceType());
5911940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
5921940fe06f035ea32a4ec4df61f6897396877aa3cdirk
5931940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::columns(void) const
5941940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
5951940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->columns);
596f27731d206fb6b9b791c0964837f85fa85883ed2dirk}
597f27731d206fb6b9b791c0964837f85fa85883ed2dirk
5981940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::comment(const std::string &comment_)
599f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
600f27731d206fb6b9b791c0964837f85fa85883ed2dirk  modifyImage();
6011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
602e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageProperty(image(),"Comment",NULL,exceptionInfo);
6031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (comment_.length() > 0)
604e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    SetImageProperty(image(),"Comment",comment_.c_str(),exceptionInfo);
60577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
606f27731d206fb6b9b791c0964837f85fa85883ed2dirk}
607f27731d206fb6b9b791c0964837f85fa85883ed2dirk
6081940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::comment(void) const
6093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6101940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const char
6111940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *value;
6123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
614e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  value=GetImageProperty(constImage(),"Comment",exceptionInfo);
61577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
6163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (value)
6181940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(std::string(value));
619c8918bb2b224f642b06140506fa85a3703fa0748cristy
6201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(std::string()); // Intentionally no exception
621735e8949026149d7f9995c76630b7dd0eeb7801dcristy}
622735e8949026149d7f9995c76630b7dd0eeb7801dcristy
6231940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::compose(const CompositeOperator compose_)
6243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->compose=compose_;
62641c73241c91f5a5debf9380cdcff10f26aa04cc3dirk}
62741c73241c91f5a5debf9380cdcff10f26aa04cc3dirk
6281940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::CompositeOperator Magick::Image::compose(void) const
62941c73241c91f5a5debf9380cdcff10f26aa04cc3dirk{
6301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->compose);
63141c73241c91f5a5debf9380cdcff10f26aa04cc3dirk}
6323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6331940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::compressType(const CompressionType compressType_)
6343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
6361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->compression=compressType_;
6371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->compressType(compressType_);
6383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
639f27731d206fb6b9b791c0964837f85fa85883ed2dirk
6401940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::CompressionType Magick::Image::compressType(void) const
6413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->compression);
6433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
644f27731d206fb6b9b791c0964837f85fa85883ed2dirk
6451940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::debug(const bool flag_)
6463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
6481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->debug(flag_);
6493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6511940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::debug(void) const
6523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->debug());
6543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
656be1bbacaa9919aa3754e3abae43557be13669657dirkvoid Magick::Image::density(const Point &density_)
657f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
658f27731d206fb6b9b791c0964837f85fa85883ed2dirk  modifyImage();
6591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->density(density_);
6601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (density_.isValid())
6611940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
662be1bbacaa9919aa3754e3abae43557be13669657dirk      image()->resolution.x=density_.x();
663be1bbacaa9919aa3754e3abae43557be13669657dirk      if (density_.y() != 0.0)
664be1bbacaa9919aa3754e3abae43557be13669657dirk        image()->resolution.y=density_.y();
6651940fe06f035ea32a4ec4df61f6897396877aa3cdirk      else
666be1bbacaa9919aa3754e3abae43557be13669657dirk        image()->resolution.y=density_.x();
6671940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
6681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
6691940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
6701940fe06f035ea32a4ec4df61f6897396877aa3cdirk      // Reset to default
671be1bbacaa9919aa3754e3abae43557be13669657dirk      image()->resolution.x=0.0;
672be1bbacaa9919aa3754e3abae43557be13669657dirk      image()->resolution.y=0.0;
6731940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
674f27731d206fb6b9b791c0964837f85fa85883ed2dirk}
675f27731d206fb6b9b791c0964837f85fa85883ed2dirk
676be1bbacaa9919aa3754e3abae43557be13669657dirkMagick::Point Magick::Image::density(void) const
677f27731d206fb6b9b791c0964837f85fa85883ed2dirk{
6781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (isValid())
6791940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
6801940fe06f035ea32a4ec4df61f6897396877aa3cdirk      ssize_t
6811940fe06f035ea32a4ec4df61f6897396877aa3cdirk        x_resolution=72,
6821940fe06f035ea32a4ec4df61f6897396877aa3cdirk        y_resolution=72;
683f27731d206fb6b9b791c0964837f85fa85883ed2dirk
6841940fe06f035ea32a4ec4df61f6897396877aa3cdirk      if (constImage()->resolution.x > 0.0)
685be1bbacaa9919aa3754e3abae43557be13669657dirk        x_resolution=constImage()->resolution.x;
6865e6be1e6a77c230e4a204fa9163d873104730c35cristy
6871940fe06f035ea32a4ec4df61f6897396877aa3cdirk      if (constImage()->resolution.y > 0.0)
688be1bbacaa9919aa3754e3abae43557be13669657dirk        y_resolution=constImage()->resolution.y;
6891940fe06f035ea32a4ec4df61f6897396877aa3cdirk
690be1bbacaa9919aa3754e3abae43557be13669657dirk      return(Point(x_resolution,y_resolution));
691d1e1c2296e4765b36d6a008a07d1763ac876bf77cristy    }
6923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->density());
6943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6961940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::depth(const size_t depth_)
6973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
6991940fe06f035ea32a4ec4df61f6897396877aa3cdirk    depth = depth_;
7001940fe06f035ea32a4ec4df61f6897396877aa3cdirk
7011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (depth > MAGICKCORE_QUANTUM_DEPTH)
7021940fe06f035ea32a4ec4df61f6897396877aa3cdirk    depth=MAGICKCORE_QUANTUM_DEPTH;
7033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7045fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk  modifyImage();
7051940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->depth=depth;
7061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->depth(depth);
7075fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk}
7085fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
7091940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::depth(void) const
7103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->depth);
7123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7141940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::directory(void) const
7155fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk{
7161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (constImage()->directory)
7171940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(std::string(constImage()->directory));
7181940fe06f035ea32a4ec4df61f6897396877aa3cdirk
71907f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  if (!quiet())
72077328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::CorruptImageWarning,
72177328896b876314656427663695bc7b2c9be3f74dirk      "Image does not contain a directory");
7221940fe06f035ea32a4ec4df61f6897396877aa3cdirk
7231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(std::string());
7245fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk}
7255fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
7261940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::endian(const Magick::EndianType endian_)
7273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
7291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->endian(endian_);
7301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->endian=endian_;
7313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7331940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::EndianType Magick::Image::endian(void) const
7343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->endian);
7363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7381940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::exifProfile(const Magick::Blob &exifProfile_)
7393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
7413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (exifProfile_.data() != 0)
7433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
7441940fe06f035ea32a4ec4df61f6897396877aa3cdirk      StringInfo
7451940fe06f035ea32a4ec4df61f6897396877aa3cdirk        *exif_profile;
7461940fe06f035ea32a4ec4df61f6897396877aa3cdirk
7471940fe06f035ea32a4ec4df61f6897396877aa3cdirk      exif_profile=AcquireStringInfo(exifProfile_.length());
7481940fe06f035ea32a4ec4df61f6897396877aa3cdirk      SetStringInfoDatum(exif_profile,(unsigned char *) exifProfile_.data());
7491940fe06f035ea32a4ec4df61f6897396877aa3cdirk      GetPPException;
750e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk      (void) SetImageProfile(image(),"exif",exif_profile,exceptionInfo);
7511940fe06f035ea32a4ec4df61f6897396877aa3cdirk      exif_profile=DestroyStringInfo(exif_profile);
75277328896b876314656427663695bc7b2c9be3f74dirk      ThrowImageException;
7533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
7543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7561940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Blob Magick::Image::exifProfile(void) const
7573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const StringInfo
7591940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *exif_profile;
7603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  exif_profile=GetImageProfile(constImage(),"exif");
7621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (exif_profile == (StringInfo *) NULL)
7631940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(Blob());
7641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Blob(GetStringInfoDatum(exif_profile),
7651940fe06f035ea32a4ec4df61f6897396877aa3cdirk    GetStringInfoLength(exif_profile)));
7661940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
7673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7681940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::fileName(const std::string &fileName_)
7691940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
7701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
7713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  fileName_.copy(image()->filename,sizeof(image()->filename)-1);
7731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->filename[fileName_.length()]=0; // Null terminate
7743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->fileName(fileName_);
7763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7781940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::fileName(void) const
7798ae632dd5ba985b5cac535dd36e209795fbd52d8cristy{
7801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->fileName());
7813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7831940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickCore::MagickSizeType Magick::Image::fileSize(void) const
7843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(GetBlobSize(constImage()));
7863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7881940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::fillColor(const Magick::Color &fillColor_)
7895fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk{
7905fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk  modifyImage();
7911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->fillColor(fillColor_);
7925fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk}
7935fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
7941940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Color Magick::Image::fillColor(void) const
7953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7961940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->fillColor());
7973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7991940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::fillRule(const Magick::FillRule &fillRule_)
8003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
8021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->fillRule(fillRule_);
8033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8051940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::FillRule Magick::Image::fillRule(void) const
8063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8071940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return constOptions()->fillRule();
8083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8101940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::fillPattern(const Image &fillPattern_)
8113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
8131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (fillPattern_.isValid())
8141940fe06f035ea32a4ec4df61f6897396877aa3cdirk    options()->fillPattern(fillPattern_.constImage());
8151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
8161940fe06f035ea32a4ec4df61f6897396877aa3cdirk    options()->fillPattern(static_cast<MagickCore::Image*>(NULL));
8178bf9e296bfe66c29544f41f760ce2ce00e311c70cristy}
8185fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
8191940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image Magick::Image::fillPattern(void) const
8208bf9e296bfe66c29544f41f760ce2ce00e311c70cristy{
8211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // FIXME: This is inordinately innefficient
8221940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const MagickCore::Image
8231940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *tmpTexture;
8245fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
8251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  Image
8261940fe06f035ea32a4ec4df61f6897396877aa3cdirk    texture;
8274ee2b0c11849aca22cbc22f1fb48e3ee9c8eaba5cristy
8281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  tmpTexture=constOptions()->fillPattern();
8295fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
8301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (tmpTexture)
8311940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
8321940fe06f035ea32a4ec4df61f6897396877aa3cdirk      MagickCore::Image
8331940fe06f035ea32a4ec4df61f6897396877aa3cdirk        *image;
8341940fe06f035ea32a4ec4df61f6897396877aa3cdirk
8351940fe06f035ea32a4ec4df61f6897396877aa3cdirk      GetPPException;
836e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk      image=CloneImage(tmpTexture,0,0,MagickTrue,exceptionInfo);
8371940fe06f035ea32a4ec4df61f6897396877aa3cdirk      texture.replaceImage(image);
83877328896b876314656427663695bc7b2c9be3f74dirk      ThrowImageException;
8391940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
8401940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(texture);
8413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8438b9f21cab4c50eb7d6e558a7a43a68833fe0b55ddirkvoid Magick::Image::filterType(const Magick::FilterType filterType_)
8443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8451940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
8461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->filter=filterType_;
8473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8498b9f21cab4c50eb7d6e558a7a43a68833fe0b55ddirkMagick::FilterType Magick::Image::filterType(void) const
8503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->filter);
8523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8535fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
8541940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::font(const std::string &font_)
8553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
8571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->font(font_);
8583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8601940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::font(void) const
8613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->font());
8633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8645fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
8656409f34d637a34a1c643632aa849371ec8b3b5a8dirkvoid Magick::Image::fontFamily(const std::string &family_)
8666409f34d637a34a1c643632aa849371ec8b3b5a8dirk{
8676409f34d637a34a1c643632aa849371ec8b3b5a8dirk  modifyImage();
8686409f34d637a34a1c643632aa849371ec8b3b5a8dirk  options()->fontFamily(family_);
8696409f34d637a34a1c643632aa849371ec8b3b5a8dirk}
8706409f34d637a34a1c643632aa849371ec8b3b5a8dirk
8716409f34d637a34a1c643632aa849371ec8b3b5a8dirkstd::string Magick::Image::fontFamily(void) const
8726409f34d637a34a1c643632aa849371ec8b3b5a8dirk{
8736409f34d637a34a1c643632aa849371ec8b3b5a8dirk  return(constOptions()->fontFamily());
8746409f34d637a34a1c643632aa849371ec8b3b5a8dirk}
8756409f34d637a34a1c643632aa849371ec8b3b5a8dirk
8761940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::fontPointsize(const double pointSize_)
8773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
8791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->fontPointsize(pointSize_);
8803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8821940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::fontPointsize(void) const
8833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->fontPointsize());
8853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
88761ab4ad4628896f4b8a4dbc6a369a93c8696efcadirkvoid Magick::Image::fontStyle(const StyleType pointSize_)
88861ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk{
88961ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  modifyImage();
89061ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  options()->fontStyle(pointSize_);
89161ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk}
89261ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk
89361ab4ad4628896f4b8a4dbc6a369a93c8696efcadirkMagick::StyleType Magick::Image::fontStyle(void) const
89461ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk{
89561ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  return(constOptions()->fontStyle());
89661ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk}
89761ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk
89861ab4ad4628896f4b8a4dbc6a369a93c8696efcadirkvoid Magick::Image::fontWeight(const size_t weight_)
89961ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk{
90061ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  modifyImage();
90161ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  options()->fontWeight(weight_);
90261ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk}
90361ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk
90461ab4ad4628896f4b8a4dbc6a369a93c8696efcadirksize_t Magick::Image::fontWeight(void) const
90561ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk{
90661ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  return(constOptions()->fontWeight());
90761ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk}
90861ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk
9091940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::format(void) const
9103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const MagickInfo
9121940fe06f035ea32a4ec4df61f6897396877aa3cdirk   *magick_info;
9133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
915e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  magick_info=GetMagickInfo(constImage()->magick,exceptionInfo);
91677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
9173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if ((magick_info != 0) && (*magick_info->description != '\0'))
9191940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(std::string(magick_info->description));
9201940fe06f035ea32a4ec4df61f6897396877aa3cdirk
92107f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  if (!quiet())
92277328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::CorruptImageWarning,
92377328896b876314656427663695bc7b2c9be3f74dirk      "Unrecognized image magick type");
92477328896b876314656427663695bc7b2c9be3f74dirk
9251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(std::string());
9263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9275fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
928aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirkstd::string Magick::Image::formatExpression(const std::string expression)
929aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk{
930aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk  char
931aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk    *text;
932aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk
93327b3d9434825bdc0a92e2cc344b76d882aaaad5bdirk  std::string
93427b3d9434825bdc0a92e2cc344b76d882aaaad5bdirk    text_string;
93527b3d9434825bdc0a92e2cc344b76d882aaaad5bdirk
936aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk  GetPPException;
937545c6e74469831406a445a1f63ea812e00a53378dirk  modifyImage();
938aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk  text=InterpretImageProperties(imageInfo(),image(),expression.c_str(),
939e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
940aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk  if (text != (char *) NULL)
94127b3d9434825bdc0a92e2cc344b76d882aaaad5bdirk    {
94227b3d9434825bdc0a92e2cc344b76d882aaaad5bdirk      text_string=std::string(text);
94327b3d9434825bdc0a92e2cc344b76d882aaaad5bdirk      text=DestroyString(text);
94427b3d9434825bdc0a92e2cc344b76d882aaaad5bdirk    }
94577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
9467c8a6469e15f257d89ec465324a170713196e030cristy  return(text_string);
947aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk}
948aefa9c18d4d9bdd46e7bf1e09ce1b3185312820edirk
9491940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::gamma(void) const
9503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->gamma);
9523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9541940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Geometry Magick::Image::geometry(void) const
9553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (constImage()->geometry)
9571940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return Geometry(constImage()->geometry);
9583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
95907f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  if (!quiet())
96077328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionWarning,
96177328896b876314656427663695bc7b2c9be3f74dirk      "Image does not contain a geometry");
9623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Geometry());
9643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9655fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
9661940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::gifDisposeMethod(
9671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const MagickCore::DisposeType disposeMethod_)
9683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
9701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->dispose=disposeMethod_;
9713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9731940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickCore::DisposeType Magick::Image::gifDisposeMethod(void) const
9743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->dispose);
9763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
978d873c4a941602fe7aad3a06900166a4da3eb56b8dirkbool Magick::Image::hasChannel(const PixelChannel channel) const
979d873c4a941602fe7aad3a06900166a4da3eb56b8dirk{
98000ac24b7dadc8fb5447c1b123bda8ff2379e905fdirk  if (GetPixelChannelTraits(constImage(),channel) == UndefinedPixelTrait)
98100ac24b7dadc8fb5447c1b123bda8ff2379e905fdirk    return(false);
98200ac24b7dadc8fb5447c1b123bda8ff2379e905fdirk
98300ac24b7dadc8fb5447c1b123bda8ff2379e905fdirk  if (channel == GreenPixelChannel || channel == BluePixelChannel)
98400ac24b7dadc8fb5447c1b123bda8ff2379e905fdirk    return (GetPixelChannelOffset(constImage(),channel) == (ssize_t)channel);
98500ac24b7dadc8fb5447c1b123bda8ff2379e905fdirk
98600ac24b7dadc8fb5447c1b123bda8ff2379e905fdirk  return(true);
987d873c4a941602fe7aad3a06900166a4da3eb56b8dirk}
988d873c4a941602fe7aad3a06900166a4da3eb56b8dirk
989019efc8c2270c29096a4c8975cde80a84da06ba0dirkvoid Magick::Image::highlightColor(const Color color_)
990019efc8c2270c29096a4c8975cde80a84da06ba0dirk{
991019efc8c2270c29096a4c8975cde80a84da06ba0dirk  std::string
992019efc8c2270c29096a4c8975cde80a84da06ba0dirk    value;
993019efc8c2270c29096a4c8975cde80a84da06ba0dirk
994019efc8c2270c29096a4c8975cde80a84da06ba0dirk  value=color_;
995019efc8c2270c29096a4c8975cde80a84da06ba0dirk  artifact("highlight-color",value);
996019efc8c2270c29096a4c8975cde80a84da06ba0dirk}
997019efc8c2270c29096a4c8975cde80a84da06ba0dirk
9981940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::iccColorProfile(const Magick::Blob &colorProfile_)
9993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1000c8c6dd58a00653e32fedca951348992a1926606adirk  profile("icc",colorProfile_);
10011940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
10023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10031940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Blob Magick::Image::iccColorProfile(void) const
10043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10051940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const StringInfo
10061940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *color_profile;
10073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  color_profile=GetImageProfile(constImage(),"icc");
10091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (color_profile == (StringInfo *) NULL)
10101940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(Blob());
10111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Blob(GetStringInfoDatum(color_profile),GetStringInfoLength(
10121940fe06f035ea32a4ec4df61f6897396877aa3cdirk    color_profile)));
10133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10151940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::interlaceType(const Magick::InterlaceType interlace_)
1016c9550792cd47c57370cd82fef338304f9e576473cristy{
10171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
10181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->interlace=interlace_;
10191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->interlaceType(interlace_);
1020c9550792cd47c57370cd82fef338304f9e576473cristy}
10215fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
10221940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::InterlaceType Magick::Image::interlaceType(void) const
10233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->interlace);
10253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1027f8c6db577bf34604c1b62d0ac8ae0a3010750493dirkvoid Magick::Image::interpolate(const PixelInterpolateMethod interpolate_)
1028f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk{
1029f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk  modifyImage();
1030f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk  image()->interpolate=interpolate_;
1031f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk}
1032f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk
1033f8c6db577bf34604c1b62d0ac8ae0a3010750493dirkMagick::PixelInterpolateMethod Magick::Image::interpolate(void) const
1034f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk{
1035f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk  return constImage()->interpolate;
1036f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk}
1037f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk
10381940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::iptcProfile(const Magick::Blob &iptcProfile_)
10393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
10411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (iptcProfile_.data() != 0)
10421940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
10431940fe06f035ea32a4ec4df61f6897396877aa3cdirk      StringInfo
10441940fe06f035ea32a4ec4df61f6897396877aa3cdirk        *iptc_profile;
10451940fe06f035ea32a4ec4df61f6897396877aa3cdirk
10461940fe06f035ea32a4ec4df61f6897396877aa3cdirk      iptc_profile=AcquireStringInfo(iptcProfile_.length());
10471940fe06f035ea32a4ec4df61f6897396877aa3cdirk      SetStringInfoDatum(iptc_profile,(unsigned char *) iptcProfile_.data());
10481940fe06f035ea32a4ec4df61f6897396877aa3cdirk      GetPPException;
1049e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk      (void) SetImageProfile(image(),"iptc",iptc_profile,exceptionInfo);
10501940fe06f035ea32a4ec4df61f6897396877aa3cdirk      iptc_profile=DestroyStringInfo(iptc_profile);
105177328896b876314656427663695bc7b2c9be3f74dirk      ThrowImageException;
10521940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
10533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10551940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Blob Magick::Image::iptcProfile(void) const
10563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const StringInfo
10581940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *iptc_profile;
10591940fe06f035ea32a4ec4df61f6897396877aa3cdirk
10601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  iptc_profile=GetImageProfile(constImage(),"iptc");
10611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (iptc_profile == (StringInfo *) NULL)
10621940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(Blob());
10631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Blob(GetStringInfoDatum(iptc_profile),GetStringInfoLength(
10641940fe06f035ea32a4ec4df61f6897396877aa3cdirk    iptc_profile)));
10651940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
10663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1067fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirkbool Magick::Image::isOpaque(void) const
1068fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk{
1069fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk  MagickBooleanType
1070fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk    result;
1071fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk
1072fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk  GetPPException;
1073fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk  result=IsImageOpaque(constImage(),exceptionInfo);
1074fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk  ThrowImageException;
1075fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk  return(result != MagickFalse ? true : false);
1076fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk}
1077fbb0a3f139d16789fc2bcaaa4a547ff9d931ee1cdirk
10781940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::isValid(const bool isValid_)
1079529fcc251289b181417ebc355b221dcaa91b1611cristy{
10801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!isValid_)
10811940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
10821940fe06f035ea32a4ec4df61f6897396877aa3cdirk      delete _imgRef;
10831940fe06f035ea32a4ec4df61f6897396877aa3cdirk      _imgRef=new ImageRef;
10841940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
10851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else if (!isValid())
10861940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
10871940fe06f035ea32a4ec4df61f6897396877aa3cdirk      // Construct with single-pixel black image to make
10881940fe06f035ea32a4ec4df61f6897396877aa3cdirk      // image valid. This is an obvious hack.
10891940fe06f035ea32a4ec4df61f6897396877aa3cdirk      size(Geometry(1,1));
10901940fe06f035ea32a4ec4df61f6897396877aa3cdirk      read("xc:black");
10911940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
1092529fcc251289b181417ebc355b221dcaa91b1611cristy}
10935fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
10941940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::isValid(void) const
1095529fcc251289b181417ebc355b221dcaa91b1611cristy{
10961940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return rows() && columns();
10971940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
1098529fcc251289b181417ebc355b221dcaa91b1611cristy
10991940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::label(const std::string &label_)
11001940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
11015fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk  modifyImage();
11021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1103e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) SetImageProperty(image(),"Label",NULL,exceptionInfo);
11041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (label_.length() > 0)
1105e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    (void) SetImageProperty(image(),"Label",label_.c_str(),exceptionInfo);
110677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
11071940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
11085fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
11091940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::label(void) const
11101940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
11111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const char
11121940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *value;
11135fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
11141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1115e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  value=GetImageProperty(constImage(),"Label",exceptionInfo);
111677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
11171940fe06f035ea32a4ec4df61f6897396877aa3cdirk
11181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (value)
11191940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(std::string(value));
11205fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
11211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(std::string());
11225fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk}
11235fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
1124019efc8c2270c29096a4c8975cde80a84da06ba0dirkvoid Magick::Image::lowlightColor(const Color color_)
1125019efc8c2270c29096a4c8975cde80a84da06ba0dirk{
1126019efc8c2270c29096a4c8975cde80a84da06ba0dirk  std::string
1127019efc8c2270c29096a4c8975cde80a84da06ba0dirk    value;
1128019efc8c2270c29096a4c8975cde80a84da06ba0dirk
1129019efc8c2270c29096a4c8975cde80a84da06ba0dirk  value=color_;
1130019efc8c2270c29096a4c8975cde80a84da06ba0dirk  artifact("lowlight-color",value);
1131019efc8c2270c29096a4c8975cde80a84da06ba0dirk}
1132019efc8c2270c29096a4c8975cde80a84da06ba0dirk
11331940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::magick(const std::string &magick_)
11345fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk{
113549ccbc806b20f4892e6c8588768617afdfcee3cddirk  size_t
113649ccbc806b20f4892e6c8588768617afdfcee3cddirk    length;
113749ccbc806b20f4892e6c8588768617afdfcee3cddirk
11383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
11395fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
114049ccbc806b20f4892e6c8588768617afdfcee3cddirk  length=sizeof(image()->magick)-1;
114149ccbc806b20f4892e6c8588768617afdfcee3cddirk  if (magick_.length() < length)
114249ccbc806b20f4892e6c8588768617afdfcee3cddirk    length=magick_.length();
114349ccbc806b20f4892e6c8588768617afdfcee3cddirk
114449ccbc806b20f4892e6c8588768617afdfcee3cddirk  if (!magick_.empty())
114549ccbc806b20f4892e6c8588768617afdfcee3cddirk    magick_.copy(image()->magick,length);
114649ccbc806b20f4892e6c8588768617afdfcee3cddirk  image()->magick[length]=0;
114749ccbc806b20f4892e6c8588768617afdfcee3cddirk
11481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->magick(magick_);
11491940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
11505fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
11511940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::magick(void) const
11521940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
11531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (*(constImage()->magick) != '\0')
11541940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(std::string(constImage()->magick));
11555fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
11561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->magick());
11571bab013cd87579204c8eb4671e3e658ef49d9aaadirk}
11581bab013cd87579204c8eb4671e3e658ef49d9aaadirk
11591940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::meanErrorPerPixel(void) const
11601bab013cd87579204c8eb4671e3e658ef49d9aaadirk{
11611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->error.mean_error_per_pixel);
11621bab013cd87579204c8eb4671e3e658ef49d9aaadirk}
11635fdc21a395951a7057e948e63ff9bb816ae4fc9cdirk
11641940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::modulusDepth(const size_t depth_)
11651bab013cd87579204c8eb4671e3e658ef49d9aaadirk{
11661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
11671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1168e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageDepth(image(),depth_,exceptionInfo);
116977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
11701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->depth(depth_);
11713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11731940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::modulusDepth(void) const
11743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
11761940fe06f035ea32a4ec4df61f6897396877aa3cdirk    depth;
11771940fe06f035ea32a4ec4df61f6897396877aa3cdirk
11781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1179e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  depth=GetImageDepth(constImage(),exceptionInfo);
118077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
11811940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(depth);
11823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11841940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::monochrome(const bool monochromeFlag_)
11853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
11871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->monochrome(monochromeFlag_);
11883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11891bab013cd87579204c8eb4671e3e658ef49d9aaadirk
11901940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::monochrome(void) const
11913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11921940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->monochrome());
11933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11951940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Geometry Magick::Image::montageGeometry(void) const
11963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (constImage()->montage)
11981940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return Magick::Geometry(constImage()->montage);
11991940fe06f035ea32a4ec4df61f6897396877aa3cdirk
120007f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  if (!quiet())
120177328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::CorruptImageWarning,
12021940fe06f035ea32a4ec4df61f6897396877aa3cdirk    "Image does not contain a montage");
12031940fe06f035ea32a4ec4df61f6897396877aa3cdirk
12041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Magick::Geometry());
1205a041706d555a780038f97211101cf8acb7f297d2cristy}
1206a041706d555a780038f97211101cf8acb7f297d2cristy
12071940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::normalizedMaxError(void) const
12083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->error.normalized_maximum_error);
12103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12121940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::normalizedMeanError(void) const
12133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->error.normalized_mean_error);
12151940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
12163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12171940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::orientation(const Magick::OrientationType orientation_)
12181940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
12193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
12201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->orientation=orientation_;
12213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12231940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::OrientationType Magick::Image::orientation(void) const
12243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->orientation);
12263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12277b971978c41d6f824b7cd2ec3c0bc264c7581d7bdirk
12281940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::page(const Magick::Geometry &pageSize_)
12293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
12311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->page(pageSize_);
12321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->page=pageSize_;
12337b971978c41d6f824b7cd2ec3c0bc264c7581d7bdirk}
12347b971978c41d6f824b7cd2ec3c0bc264c7581d7bdirk
12351940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Geometry Magick::Image::page(void) const
12367b971978c41d6f824b7cd2ec3c0bc264c7581d7bdirk{
12371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Geometry(constImage()->page.width,constImage()->page.height,
1238cd27554467f87f94cd4b4880530239264e379467dirk    constImage()->page.x,constImage()->page.y));
12393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12411940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::quality(const size_t quality_)
12423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
12441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->quality=quality_;
12451940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->quality(quality_);
12463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12481940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::quality(void) const
12493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->quality);
12513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12531940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::quantizeColors(const size_t colors_)
12543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
12561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->quantizeColors(colors_);
12573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12591940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::quantizeColors(void) const
12601bab013cd87579204c8eb4671e3e658ef49d9aaadirk{
12611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->quantizeColors());
12621bab013cd87579204c8eb4671e3e658ef49d9aaadirk}
12631bab013cd87579204c8eb4671e3e658ef49d9aaadirk
12641940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::quantizeColorSpace(
12651940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::ColorspaceType colorSpace_)
1266c670e0adfb05f445e331c22c5115bf7bff0ef5b2dirk{
1267c670e0adfb05f445e331c22c5115bf7bff0ef5b2dirk  modifyImage();
12681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->quantizeColorSpace(colorSpace_);
1269c670e0adfb05f445e331c22c5115bf7bff0ef5b2dirk}
1270c670e0adfb05f445e331c22c5115bf7bff0ef5b2dirk
12711940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::ColorspaceType Magick::Image::quantizeColorSpace(void) const
12723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->quantizeColorSpace());
12743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12761940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::quantizeDither(const bool ditherFlag_)
12773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
12791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->quantizeDither(ditherFlag_);
12803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12821940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::quantizeDither(void) const
12831bab013cd87579204c8eb4671e3e658ef49d9aaadirk{
12841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->quantizeDither());
12851bab013cd87579204c8eb4671e3e658ef49d9aaadirk}
12861bab013cd87579204c8eb4671e3e658ef49d9aaadirk
12876d64b3658c2fa7218fbc309b9c85e3ec4441310edirkvoid Magick::Image::quantizeDitherMethod(const DitherMethod ditherMethod_)
12886d64b3658c2fa7218fbc309b9c85e3ec4441310edirk{
12896d64b3658c2fa7218fbc309b9c85e3ec4441310edirk  modifyImage();
12906d64b3658c2fa7218fbc309b9c85e3ec4441310edirk  options()->quantizeDitherMethod(ditherMethod_);
12916d64b3658c2fa7218fbc309b9c85e3ec4441310edirk}
12926d64b3658c2fa7218fbc309b9c85e3ec4441310edirk
12936d64b3658c2fa7218fbc309b9c85e3ec4441310edirkMagickCore::DitherMethod Magick::Image::quantizeDitherMethod(void) const
12946d64b3658c2fa7218fbc309b9c85e3ec4441310edirk{
12956d64b3658c2fa7218fbc309b9c85e3ec4441310edirk  return(constOptions()->quantizeDitherMethod());
12966d64b3658c2fa7218fbc309b9c85e3ec4441310edirk}
12976d64b3658c2fa7218fbc309b9c85e3ec4441310edirk
12981940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::quantizeTreeDepth(const size_t treeDepth_)
12991bab013cd87579204c8eb4671e3e658ef49d9aaadirk{
13001bab013cd87579204c8eb4671e3e658ef49d9aaadirk  modifyImage();
13011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->quantizeTreeDepth(treeDepth_);
13021bab013cd87579204c8eb4671e3e658ef49d9aaadirk}
13031bab013cd87579204c8eb4671e3e658ef49d9aaadirk
13041940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::quantizeTreeDepth() const
1305136e4f4cade2bbc8ac5f5a359e6f94e057c5b3b2dirk{
13061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->quantizeTreeDepth());
1307136e4f4cade2bbc8ac5f5a359e6f94e057c5b3b2dirk}
1308136e4f4cade2bbc8ac5f5a359e6f94e057c5b3b2dirk
130977328896b876314656427663695bc7b2c9be3f74dirkvoid Magick::Image::quiet(const bool quiet_)
131077328896b876314656427663695bc7b2c9be3f74dirk{
131107f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  modifyImage();
131207f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  options()->quiet(quiet_);
131377328896b876314656427663695bc7b2c9be3f74dirk}
131477328896b876314656427663695bc7b2c9be3f74dirk
131577328896b876314656427663695bc7b2c9be3f74dirkbool Magick::Image::quiet(void) const
131677328896b876314656427663695bc7b2c9be3f74dirk{
131707f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  return(constOptions()->quiet());
131877328896b876314656427663695bc7b2c9be3f74dirk}
131977328896b876314656427663695bc7b2c9be3f74dirk
13201940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::renderingIntent(
13211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::RenderingIntent renderingIntent_)
13223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
13241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->rendering_intent=renderingIntent_;
13251940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
13263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13271940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::RenderingIntent Magick::Image::renderingIntent(void) const
13281940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
13291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(static_cast<Magick::RenderingIntent>(constImage()->rendering_intent));
13303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13321940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::resolutionUnits(
13331940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::ResolutionType resolutionUnits_)
13343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
13361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->units=resolutionUnits_;
13371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->resolutionUnits(resolutionUnits_);
13383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13401940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::ResolutionType Magick::Image::resolutionUnits(void) const
13413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1342cfc8b6dc5e4e97e865c5106b745dd73dc8df0109dirk  return(static_cast<Magick::ResolutionType>(constImage()->units));
13433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13451940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::rows(void) const
13463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->rows);
13483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13501940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::scene(const size_t scene_)
13513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
13531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->scene=scene_;
13543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13561940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::scene(void) const
13571940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
13581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->scene);
13593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13611940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::size(const Geometry &geometry_)
13623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
13641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->size(geometry_);
13651940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->rows=geometry_.height();
13661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->columns=geometry_.width();
13673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13691940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Geometry Magick::Image::size(void) const
13703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13711940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Magick::Geometry(constImage()->columns,constImage()->rows));
13723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13741940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokeAntiAlias(const bool flag_)
13753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
13771940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->strokeAntiAlias(flag_);
13783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13801940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::strokeAntiAlias(void) const
13813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->strokeAntiAlias());
13833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13851940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokeColor(const Magick::Color &strokeColor_)
13863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1387019efc8c2270c29096a4c8975cde80a84da06ba0dirk  std::string
1388019efc8c2270c29096a4c8975cde80a84da06ba0dirk    value;
1389019efc8c2270c29096a4c8975cde80a84da06ba0dirk
13901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
13911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->strokeColor(strokeColor_);
1392019efc8c2270c29096a4c8975cde80a84da06ba0dirk  value=strokeColor_;
1393019efc8c2270c29096a4c8975cde80a84da06ba0dirk  artifact("stroke",value);
13943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13961940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Color Magick::Image::strokeColor(void) const
13973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->strokeColor());
13991940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
14003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14011940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokeDashArray(const double *strokeDashArray_)
14023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
14041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->strokeDashArray(strokeDashArray_);
14051940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
14063884f69ac6f82e16fc379fb6c6521960c19045a2cristy
14071940fe06f035ea32a4ec4df61f6897396877aa3cdirkconst double* Magick::Image::strokeDashArray(void) const
14081940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
14091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->strokeDashArray());
14103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14121940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokeDashOffset(const double strokeDashOffset_)
14133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
14151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->strokeDashOffset(strokeDashOffset_);
14163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14181940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::strokeDashOffset(void) const
14193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->strokeDashOffset());
14213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14231940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokeLineCap(const Magick::LineCap lineCap_)
14243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
14261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->strokeLineCap(lineCap_);
14273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14291940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::LineCap Magick::Image::strokeLineCap(void) const
14303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->strokeLineCap());
14323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14341940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokeLineJoin(const Magick::LineJoin lineJoin_)
14353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
14371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->strokeLineJoin(lineJoin_);
14383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14401940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::LineJoin Magick::Image::strokeLineJoin(void) const
14413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->strokeLineJoin());
14433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14451940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokeMiterLimit(const size_t strokeMiterLimit_)
14463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
14481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->strokeMiterLimit(strokeMiterLimit_);
14493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14501940fe06f035ea32a4ec4df61f6897396877aa3cdirk
14511940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::strokeMiterLimit(void) const
14523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->strokeMiterLimit());
14543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14561940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokePattern(const Image &strokePattern_)
14573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
14591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if(strokePattern_.isValid())
14601940fe06f035ea32a4ec4df61f6897396877aa3cdirk    options()->strokePattern(strokePattern_.constImage());
14611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
14621940fe06f035ea32a4ec4df61f6897396877aa3cdirk    options()->strokePattern(static_cast<MagickCore::Image*>(NULL));
14633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14651940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image Magick::Image::strokePattern(void) const
14663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // FIXME: This is inordinately innefficient
14681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const MagickCore::Image
14691940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *tmpTexture;
14701940fe06f035ea32a4ec4df61f6897396877aa3cdirk
14711940fe06f035ea32a4ec4df61f6897396877aa3cdirk  Image
14721940fe06f035ea32a4ec4df61f6897396877aa3cdirk    texture;
14733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  tmpTexture=constOptions()->strokePattern();
14751940fe06f035ea32a4ec4df61f6897396877aa3cdirk
14761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (tmpTexture)
14771940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
14781940fe06f035ea32a4ec4df61f6897396877aa3cdirk      MagickCore::Image
14791940fe06f035ea32a4ec4df61f6897396877aa3cdirk        *image;
14801940fe06f035ea32a4ec4df61f6897396877aa3cdirk
14811940fe06f035ea32a4ec4df61f6897396877aa3cdirk      GetPPException;
1482e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk      image=CloneImage(tmpTexture,0,0,MagickTrue,exceptionInfo);
14831940fe06f035ea32a4ec4df61f6897396877aa3cdirk      texture.replaceImage(image);
148477328896b876314656427663695bc7b2c9be3f74dirk      ThrowImageException;
14851940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
14861940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(texture);
14873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14881940fe06f035ea32a4ec4df61f6897396877aa3cdirk
14891940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strokeWidth(const double strokeWidth_)
14903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1491019efc8c2270c29096a4c8975cde80a84da06ba0dirk  char
1492151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy    value[MagickPathExtent];
1493019efc8c2270c29096a4c8975cde80a84da06ba0dirk
14943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
14951940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->strokeWidth(strokeWidth_);
1496151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy  FormatLocaleString(value,MagickPathExtent,"%.20g",strokeWidth_);
1497019efc8c2270c29096a4c8975cde80a84da06ba0dirk  (void) SetImageArtifact(image(),"strokewidth",value);
14983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14991940fe06f035ea32a4ec4df61f6897396877aa3cdirk
15001940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::strokeWidth(void) const
15013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->strokeWidth());
15033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
15051940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::subImage(const size_t subImage_)
15063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15071940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
15081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->subImage(subImage_);
15093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
15111940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::subImage(void) const
15121940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
15131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->subImage());
15141940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
15153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
15161940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::subRange(const size_t subRange_)
15173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
15191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->subRange(subRange_);
15203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15211940fe06f035ea32a4ec4df61f6897396877aa3cdirk
15221940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::subRange(void) const
15233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->subRange());
15253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1527ea20b31c9b8d1a55b400559ae15760243dcb897fdirkvoid Magick::Image::textAntiAlias(const bool flag_)
1528ea20b31c9b8d1a55b400559ae15760243dcb897fdirk{
1529ea20b31c9b8d1a55b400559ae15760243dcb897fdirk  modifyImage();
1530ea20b31c9b8d1a55b400559ae15760243dcb897fdirk  options()->textAntiAlias(flag_);
1531ea20b31c9b8d1a55b400559ae15760243dcb897fdirk}
1532ea20b31c9b8d1a55b400559ae15760243dcb897fdirk
1533ea20b31c9b8d1a55b400559ae15760243dcb897fdirkbool Magick::Image::textAntiAlias(void) const
1534ea20b31c9b8d1a55b400559ae15760243dcb897fdirk{
1535ea20b31c9b8d1a55b400559ae15760243dcb897fdirk  return(constOptions()->textAntiAlias());
1536ea20b31c9b8d1a55b400559ae15760243dcb897fdirk}
1537ea20b31c9b8d1a55b400559ae15760243dcb897fdirk
1538d37417692d7a7040aa854e493723e92fac1e3ae6dirkvoid Magick::Image::textDirection(DirectionType direction_)
1539d37417692d7a7040aa854e493723e92fac1e3ae6dirk{
1540d37417692d7a7040aa854e493723e92fac1e3ae6dirk  modifyImage();
1541d37417692d7a7040aa854e493723e92fac1e3ae6dirk  options()->textDirection(direction_);
1542d37417692d7a7040aa854e493723e92fac1e3ae6dirk}
1543d37417692d7a7040aa854e493723e92fac1e3ae6dirk
1544d37417692d7a7040aa854e493723e92fac1e3ae6dirkMagick::DirectionType Magick::Image::textDirection(void) const
1545d37417692d7a7040aa854e493723e92fac1e3ae6dirk{
1546d37417692d7a7040aa854e493723e92fac1e3ae6dirk  return(constOptions()->textDirection());
1547d37417692d7a7040aa854e493723e92fac1e3ae6dirk}
1548d37417692d7a7040aa854e493723e92fac1e3ae6dirk
15491940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::textEncoding(const std::string &encoding_)
15503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
15521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->textEncoding(encoding_);
15531940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
15541940fe06f035ea32a4ec4df61f6897396877aa3cdirk
15551940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::textEncoding(void) const
15561940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
15571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->textEncoding());
15583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15591940fe06f035ea32a4ec4df61f6897396877aa3cdirk
1560d37417692d7a7040aa854e493723e92fac1e3ae6dirkvoid Magick::Image::textGravity(GravityType gravity_)
1561d37417692d7a7040aa854e493723e92fac1e3ae6dirk{
1562d37417692d7a7040aa854e493723e92fac1e3ae6dirk  modifyImage();
1563d37417692d7a7040aa854e493723e92fac1e3ae6dirk  options()->textGravity(gravity_);
1564d37417692d7a7040aa854e493723e92fac1e3ae6dirk}
1565d37417692d7a7040aa854e493723e92fac1e3ae6dirk
1566d37417692d7a7040aa854e493723e92fac1e3ae6dirkMagick::GravityType Magick::Image::textGravity(void) const
1567d37417692d7a7040aa854e493723e92fac1e3ae6dirk{
1568d37417692d7a7040aa854e493723e92fac1e3ae6dirk  return(constOptions()->textGravity());
1569d37417692d7a7040aa854e493723e92fac1e3ae6dirk}
1570d37417692d7a7040aa854e493723e92fac1e3ae6dirk
1571a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::Image::textInterlineSpacing(double spacing_)
1572a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1573a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  modifyImage();
1574a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  options()->textInterlineSpacing(spacing_);
1575a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1576a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1577a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkdouble Magick::Image::textInterlineSpacing(void) const
1578a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1579a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return(constOptions()->textInterlineSpacing());
1580a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1581a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1582a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::Image::textInterwordSpacing(double spacing_)
1583a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1584a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  modifyImage();
1585a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  options()->textInterwordSpacing(spacing_);
1586a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1587a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1588a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkdouble Magick::Image::textInterwordSpacing(void) const
1589a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1590a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return(constOptions()->textInterwordSpacing());
1591a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1592a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1593a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::Image::textKerning(double kerning_)
1594a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1595a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  modifyImage();
1596a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  options()->textKerning(kerning_);
1597a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1598a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1599a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkdouble Magick::Image::textKerning(void) const
1600a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1601a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return(constOptions()->textKerning());
1602a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1603a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
160461ab4ad4628896f4b8a4dbc6a369a93c8696efcadirkvoid Magick::Image::textUnderColor(const Color &underColor_)
160561ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk{
160661ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  modifyImage();
160761ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  options()->textUnderColor(underColor_);
160861ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk}
160961ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk
161061ab4ad4628896f4b8a4dbc6a369a93c8696efcadirkMagick::Color Magick::Image::textUnderColor(void) const
161161ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk{
161261ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk  return(constOptions()->textUnderColor());
161361ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk}
161461ab4ad4628896f4b8a4dbc6a369a93c8696efcadirk
16151940fe06f035ea32a4ec4df61f6897396877aa3cdirksize_t Magick::Image::totalColors(void) const
16163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
16181940fe06f035ea32a4ec4df61f6897396877aa3cdirk    colors;
16191940fe06f035ea32a4ec4df61f6897396877aa3cdirk
16201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1621d826672d08aaeecacda6be051a8a8ccc15beef44dirk  colors=GetNumberColors(constImage(),(FILE *) NULL,exceptionInfo);
162277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
16231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return colors;
16243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
16261940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::transformRotation(const double angle_)
16273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
16291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->transformRotation(angle_);
16303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16311940fe06f035ea32a4ec4df61f6897396877aa3cdirk
16321940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::transformSkewX(const double skewx_)
16333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
16351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->transformSkewX(skewx_);
16363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
16381940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::transformSkewY(const double skewy_)
16393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
16411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->transformSkewY(skewy_);
16423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16431940fe06f035ea32a4ec4df61f6897396877aa3cdirk
16441940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::ImageType Magick::Image::type(void) const
16453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16464a07d11bbbb01375b560051558ebd6da597a15f9dirk  if (constOptions()->type() != UndefinedType)
16474a07d11bbbb01375b560051558ebd6da597a15f9dirk    return(constOptions()->type());
1648ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk  return(GetImageType(constImage()));
16493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
16511940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::type(const Magick::ImageType type_)
16523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
16541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->type(type_);
16551940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1656e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageType(image(),type_,exceptionInfo);
165777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
16583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
16601940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::verbose(const bool verboseFlag_)
16611940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
16621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
16631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->verbose(verboseFlag_);
16641940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
16653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
16661940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::verbose(void) const
16671940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
16681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->verbose());
16693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
16711940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::virtualPixelMethod(
16721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const VirtualPixelMethod virtualPixelMethod_)
16731940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
16741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
16751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1676e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageVirtualPixelMethod(image(),virtualPixelMethod_,exceptionInfo);
167777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
16783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16791940fe06f035ea32a4ec4df61f6897396877aa3cdirk
16801940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::VirtualPixelMethod Magick::Image::virtualPixelMethod(void) const
16813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(GetImageVirtualPixelMethod(constImage()));
16833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
16851940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::x11Display(const std::string &display_)
16863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
16881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->x11Display(display_);
16893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16901940fe06f035ea32a4ec4df61f6897396877aa3cdirk
16911940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::x11Display(void) const
16923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constOptions()->x11Display());
16943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
16953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
16961940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::xResolution(void) const
16973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
16981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->resolution.x);
16993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17011940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::yResolution(void) const
17023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(constImage()->resolution.y);
17043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17061940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::adaptiveBlur(const double radius_,const double sigma_)
17073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
17091940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
17101940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1712e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=AdaptiveBlurImage(constImage(),radius_,sigma_,exceptionInfo);
17131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
171477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
17153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17171940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::adaptiveResize(const Geometry &geometry_)
17183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
17201940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
17213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17221940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
17231940fe06f035ea32a4ec4df61f6897396877aa3cdirk    height=rows(),
17241940fe06f035ea32a4ec4df61f6897396877aa3cdirk    width=columns();
17251940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ssize_t
17271940fe06f035ea32a4ec4df61f6897396877aa3cdirk    x=0,
17281940fe06f035ea32a4ec4df61f6897396877aa3cdirk    y=0;
17291940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ParseMetaGeometry(static_cast<std::string>(geometry_).c_str(),&x,&y,&width,
17311940fe06f035ea32a4ec4df61f6897396877aa3cdirk    &height);
17323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17331940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1734e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=AdaptiveResizeImage(constImage(),width,height,exceptionInfo);
17351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
173677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
17373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17381940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17391940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::adaptiveSharpen(const double radius_,const double sigma_)
17403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
17421940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
17431940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1745e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=AdaptiveSharpenImage(constImage(),radius_,sigma_,exceptionInfo);
17461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
174777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
17483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17501940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::adaptiveSharpenChannel(const ChannelType channel_,
17511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double radius_,const double sigma_ )
17523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
17541940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
17551940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
17575fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
1758e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=AdaptiveSharpenImage(constImage(),radius_,sigma_,exceptionInfo);
17591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
17601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
176177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
17623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17641940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::adaptiveThreshold(const size_t width_,const size_t height_,
17657034a926a4332ea16c1026c4adf91ab6a6176c0ddirk   const double bias_)
17663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17671940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
17691940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
17701940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17711940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1772b1461b0e2f9ba7fab579489eb3760eb6ef8f2386dirk  newImage=AdaptiveThresholdImage(constImage(),width_,height_,bias_,
1773e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
17741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
177577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
17763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17771940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17781940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::addNoise(const NoiseType noiseType_)
17793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
17811940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
17821940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17831940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1784e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=AddNoiseImage(constImage(),noiseType_,1.0,exceptionInfo);
17851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
178677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
17873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17891940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::addNoiseChannel(const ChannelType channel_,
17901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const NoiseType noiseType_)
17913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17921940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
17931940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
17941940fe06f035ea32a4ec4df61f6897396877aa3cdirk
17951940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
17965fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
1797e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=AddNoiseImage(constImage(),noiseType_,1.0,exceptionInfo);
17981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
17991940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
180077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
18013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
18031940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::affineTransform(const DrawableAffine &affine_)
180400bcb8c08b29ab70e1d24a21ccfe8515baa2af6cdirk{
18051940fe06f035ea32a4ec4df61f6897396877aa3cdirk  AffineMatrix
18061940fe06f035ea32a4ec4df61f6897396877aa3cdirk    _affine;
18071940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
18091940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
18101940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  _affine.sx=affine_.sx();
18121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  _affine.sy=affine_.sy();
18131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  _affine.rx=affine_.rx();
18141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  _affine.ry=affine_.ry();
18151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  _affine.tx=affine_.tx();
18161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  _affine.ty=affine_.ty();
18171940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1819e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=AffineTransformImage(constImage(),&_affine,exceptionInfo);
18201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
182177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
182200bcb8c08b29ab70e1d24a21ccfe8515baa2af6cdirk}
182300bcb8c08b29ab70e1d24a21ccfe8515baa2af6cdirk
18241940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::alpha(const unsigned int alpha_)
18253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
18271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1828e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageAlpha(image(),alpha_,exceptionInfo);
182977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
18303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18311940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18321940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::alphaChannel(AlphaChannelOption alphaOption_)
18333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
18351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1836e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageAlphaChannel(image(),alphaOption_,exceptionInfo);
183777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
18383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
18401940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::annotate(const std::string &text_,
18411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Geometry &location_)
18421940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
18431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  annotate(text_,location_,NorthWestGravity,0.0);
18443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18451940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18461940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::annotate(const std::string &text_,
18471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Geometry &boundingArea_,const GravityType gravity_)
18483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  annotate(text_,boundingArea_,gravity_,0.0);
18503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
18521940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::annotate(const std::string &text_,
18531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Geometry &boundingArea_,const GravityType gravity_,
18541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double degrees_)
18553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  AffineMatrix
18571940fe06f035ea32a4ec4df61f6897396877aa3cdirk    oaffine;
18581940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  char
1860151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy    boundingArea[MagickPathExtent];
18611940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  DrawInfo
18631940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *drawInfo;
18641940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
18661940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo=options()->drawInfo();
18681c990ab80c6bd9e2781ad0940ed5022c9a6b5a86dirk  drawInfo->text=DestroyString(drawInfo->text);
18691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo->text=const_cast<char *>(text_.c_str());
18701c990ab80c6bd9e2781ad0940ed5022c9a6b5a86dirk  drawInfo->geometry=DestroyString(drawInfo->geometry);
18711940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (boundingArea_.isValid())
18731940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
18741940fe06f035ea32a4ec4df61f6897396877aa3cdirk      if (boundingArea_.width() == 0 || boundingArea_.height() == 0)
18751940fe06f035ea32a4ec4df61f6897396877aa3cdirk        {
1876151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy          FormatLocaleString(boundingArea,MagickPathExtent,"%+.20g%+.20g",
18771940fe06f035ea32a4ec4df61f6897396877aa3cdirk            (double) boundingArea_.xOff(),(double) boundingArea_.yOff());
18781940fe06f035ea32a4ec4df61f6897396877aa3cdirk        }
18791940fe06f035ea32a4ec4df61f6897396877aa3cdirk      else
18801940fe06f035ea32a4ec4df61f6897396877aa3cdirk        {
1881e11ddbd1db03b2672c50a072930f76d22848916bcristy          (void) CopyMagickString(boundingArea,
1882151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy            std::string(boundingArea_).c_str(), MagickPathExtent);
18831940fe06f035ea32a4ec4df61f6897396877aa3cdirk        }
18841940fe06f035ea32a4ec4df61f6897396877aa3cdirk      drawInfo->geometry=boundingArea;
18851940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
18861940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo->gravity=gravity_;
18881940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18891940fe06f035ea32a4ec4df61f6897396877aa3cdirk  oaffine=drawInfo->affine;
18901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (degrees_ != 0.0)
18911940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
18921940fe06f035ea32a4ec4df61f6897396877aa3cdirk       AffineMatrix
18931940fe06f035ea32a4ec4df61f6897396877aa3cdirk         affine,
18941940fe06f035ea32a4ec4df61f6897396877aa3cdirk         current;
18951940fe06f035ea32a4ec4df61f6897396877aa3cdirk
18961940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.sx=1.0;
18971940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.rx=0.0;
18981940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.ry=0.0;
18991940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.sy=1.0;
19001940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.tx=0.0;
19011940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.ty=0.0;
19021940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19031940fe06f035ea32a4ec4df61f6897396877aa3cdirk       current=drawInfo->affine;
19041940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.sx=cos(DegreesToRadians(fmod(degrees_,360.0)));
19051940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.rx=sin(DegreesToRadians(fmod(degrees_,360.0)));
19061940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.ry=(-sin(DegreesToRadians(fmod(degrees_,360.0))));
19071940fe06f035ea32a4ec4df61f6897396877aa3cdirk       affine.sy=cos(DegreesToRadians(fmod(degrees_,360.0)));
19081940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19091940fe06f035ea32a4ec4df61f6897396877aa3cdirk       drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
19101940fe06f035ea32a4ec4df61f6897396877aa3cdirk       drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
19111940fe06f035ea32a4ec4df61f6897396877aa3cdirk       drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
19121940fe06f035ea32a4ec4df61f6897396877aa3cdirk       drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
19131940fe06f035ea32a4ec4df61f6897396877aa3cdirk       drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty
19141940fe06f035ea32a4ec4df61f6897396877aa3cdirk         +current.tx;
19151940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
19161940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1918e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  AnnotateImage(image(),drawInfo,exceptionInfo);
19191940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Restore original values
19211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo->affine=oaffine;
19221c990ab80c6bd9e2781ad0940ed5022c9a6b5a86dirk  drawInfo->text=(char *) NULL;
19231c990ab80c6bd9e2781ad0940ed5022c9a6b5a86dirk  drawInfo->geometry=(char *) NULL;
19241940fe06f035ea32a4ec4df61f6897396877aa3cdirk
192577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
19263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19271940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19281940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::annotate(const std::string &text_,
19291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const GravityType gravity_)
19303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  DrawInfo
19321940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *drawInfo;
19331940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
19351940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo=options()->drawInfo();
1937614561dec61cab56935f3507af707a385f1697dadirk  drawInfo->text=DestroyString(drawInfo->text);
19381940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo->text=const_cast<char *>(text_.c_str());
19391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo->gravity=gravity_;
19401940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1942e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  AnnotateImage(image(),drawInfo,exceptionInfo);
19431940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo->gravity=NorthWestGravity;
1945614561dec61cab56935f3507af707a385f1697dadirk  drawInfo->text=(char *) NULL;
19461940fe06f035ea32a4ec4df61f6897396877aa3cdirk
194777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
19483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
19501940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::artifact(const std::string &name_,const std::string &value_)
19513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
19531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) SetImageArtifact(image(),name_.c_str(),value_.c_str());
19543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19551940fe06f035ea32a4ec4df61f6897396877aa3cdirk
1956100c62ceee252ed475fca6a57b3dbaa3d27d2ed9dirkstd::string Magick::Image::artifact(const std::string &name_) const
19573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const char
19591940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *value;
19601940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  value=GetImageArtifact(constImage(),name_.c_str());
19621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (value)
19631940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(std::string(value));
19641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(std::string());
19653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
19671940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::attribute(const std::string name_,const std::string value_)
19683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
19701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1971e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SetImageProperty(image(),name_.c_str(),value_.c_str(),exceptionInfo);
197277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
19731940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
19743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1975100c62ceee252ed475fca6a57b3dbaa3d27d2ed9dirkstd::string Magick::Image::attribute(const std::string name_) const
19761940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
19771940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const char
19781940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *value;
19791940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1981e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  value=GetImageProperty(constImage(),name_.c_str(),exceptionInfo);
198277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
19831940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (value)
19851940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(std::string(value));
19861940fe06f035ea32a4ec4df61f6897396877aa3cdirk
19871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(std::string()); // Intentionally no exception
19883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
19901940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::autoGamma(void)
19913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
19931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
1994e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) SyncImageSettings(imageInfo(),image(),exceptionInfo);
1995e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) AutoGammaImage(image(),exceptionInfo);
199677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
19971940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
19983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
19991940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::autoGammaChannel(const ChannelType channel_)
20001940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
20011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
20021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
20035fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
2004e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) SyncImageSettings(imageInfo(),image(),exceptionInfo);
2005e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) AutoGammaImage(image(),exceptionInfo);
20061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
200777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20091940fe06f035ea32a4ec4df61f6897396877aa3cdirk
20101940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::autoLevel(void)
20113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
20131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2014e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) AutoLevelImage(image(),exceptionInfo);
201577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
20181940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::autoLevelChannel(const ChannelType channel_)
20193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
20211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
20225fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
2023e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) AutoLevelImage(image(),exceptionInfo);
20241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
202577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20271940fe06f035ea32a4ec4df61f6897396877aa3cdirk
20281940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::autoOrient(void)
20293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
20311940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
20321940fe06f035ea32a4ec4df61f6897396877aa3cdirk
20331940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (image()->orientation == UndefinedOrientation ||
20341940fe06f035ea32a4ec4df61f6897396877aa3cdirk      image()->orientation == TopLeftOrientation)
20351940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return;
20361940fe06f035ea32a4ec4df61f6897396877aa3cdirk
20371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2038e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=AutoOrientImage(constImage(),image()->orientation,exceptionInfo);
20391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
204077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
20431940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::blackThreshold(const std::string &threshold_)
20443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20451940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
20461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2047e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  BlackThresholdImage(image(),threshold_.c_str(),exceptionInfo);
204877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20491940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
20503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
20511940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::blackThresholdChannel(const ChannelType channel_,
20521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &threshold_)
20531940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
20543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
20551940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
20565fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
2057e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  BlackThresholdImage(image(),threshold_.c_str(),exceptionInfo);
20581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
205977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20601940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
20613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
20621940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::blueShift(const double factor_)
20631940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
20641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
20651940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
20663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
20671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2068e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=BlueShiftImage(constImage(),factor_,exceptionInfo);
20691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
207077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20711940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
20721940fe06f035ea32a4ec4df61f6897396877aa3cdirk
20731940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::blur(const double radius_,const double sigma_)
20741940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
20751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
20761940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
20771940fe06f035ea32a4ec4df61f6897396877aa3cdirk
20781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2079e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=BlurImage(constImage(),radius_,sigma_,exceptionInfo);
20801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
208177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20831940fe06f035ea32a4ec4df61f6897396877aa3cdirk
20841940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::blurChannel(const ChannelType channel_,
20851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double radius_,const double sigma_)
20863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
20881940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
20893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
20901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
20915fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
2092e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=BlurImage(constImage(),radius_,sigma_,exceptionInfo);
20931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
20941940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
209577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
20961940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
20971940fe06f035ea32a4ec4df61f6897396877aa3cdirk
20981940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::border(const Geometry &geometry_)
20991940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
21001940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
21011940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
21023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
21041940fe06f035ea32a4ec4df61f6897396877aa3cdirk    borderInfo=geometry_;
21053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
21071940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=BorderImage(constImage(),&borderInfo,image()->compose,
2108e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
21091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
211077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
21113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21131940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::brightnessContrast(const double brightness_,
21141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double contrast_)
21153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
21171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2118e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  BrightnessContrastImage(image(),brightness_,contrast_,exceptionInfo);
211977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
21201940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
21213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21221940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::brightnessContrastChannel(const ChannelType channel_,
21231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double brightness_,const double contrast_)
21241940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
21253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
21261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
21275fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
2128e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  BrightnessContrastImage(image(),brightness_,contrast_,exceptionInfo);
21291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
213077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
2131064bae341824f86d5e0b4e0010084c7a358704d7dirk}
2132064bae341824f86d5e0b4e0010084c7a358704d7dirk
2133064bae341824f86d5e0b4e0010084c7a358704d7dirkvoid Magick::Image::cannyEdge(const double radius_,const double sigma_,
2134064bae341824f86d5e0b4e0010084c7a358704d7dirk  const double lowerPercent_,const double upperPercent_)
2135064bae341824f86d5e0b4e0010084c7a358704d7dirk{
2136064bae341824f86d5e0b4e0010084c7a358704d7dirk  MagickCore::Image
2137064bae341824f86d5e0b4e0010084c7a358704d7dirk    *newImage;
2138064bae341824f86d5e0b4e0010084c7a358704d7dirk
2139064bae341824f86d5e0b4e0010084c7a358704d7dirk  modifyImage();
2140064bae341824f86d5e0b4e0010084c7a358704d7dirk  GetPPException;
2141064bae341824f86d5e0b4e0010084c7a358704d7dirk  newImage=CannyEdgeImage(constImage(),radius_,sigma_,lowerPercent_,
2142e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    upperPercent_,exceptionInfo);
2143064bae341824f86d5e0b4e0010084c7a358704d7dirk  replaceImage(newImage);
214477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
21451940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
21463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21471f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirkvoid Magick::Image::cdl(const std::string &cdl_)
21481f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk{
21491f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  modifyImage();
21501f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  GetPPException;
21511f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  (void) ColorDecisionListImage(image(),cdl_.c_str(),exceptionInfo);
21521f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  ThrowImageException;
21531f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk}
21541f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk
21551940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::channel(const ChannelType channel_)
21561940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
21571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
21581940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
21593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2161e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=SeparateImage(image(),channel_,exceptionInfo);
21621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
216377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
21641940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
21653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21661940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::charcoal(const double radius_,const double sigma_)
21671940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
21681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
21691940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
21703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21711940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2172e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=CharcoalImage(image(),radius_,sigma_,exceptionInfo);
21731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
217477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
21753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21761940fe06f035ea32a4ec4df61f6897396877aa3cdirk
21771940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::chop(const Geometry &geometry_)
21783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
21801940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
21813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
21831940fe06f035ea32a4ec4df61f6897396877aa3cdirk    chopInfo=geometry_;
21843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2186e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ChopImage(image(),&chopInfo,exceptionInfo);
21871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
218877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
21893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
219198e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirkvoid Magick::Image::chromaBluePrimary(const double x_,const double y_,
219298e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  const double z_)
21933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
219468f837b3e98e5cc19a4874ee606e6c6c88162e7acristy  modifyImage();
21951940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->chromaticity.blue_primary.x=x_;
21961940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->chromaticity.blue_primary.y=y_;
219798e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  image()->chromaticity.blue_primary.z=z_;
21983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21991940fe06f035ea32a4ec4df61f6897396877aa3cdirk
220098e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirkvoid Magick::Image::chromaBluePrimary(double *x_,double *y_,double *z_) const
22013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  *x_=constImage()->chromaticity.blue_primary.x;
22031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  *y_=constImage()->chromaticity.blue_primary.y;
220498e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  *z_=constImage()->chromaticity.blue_primary.z;
22053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
220798e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirkvoid Magick::Image::chromaGreenPrimary(const double x_,const double y_,
220898e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  const double z_)
22093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
22111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->chromaticity.green_primary.x=x_;
22121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->chromaticity.green_primary.y=y_;
221398e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  image()->chromaticity.green_primary.z=z_;
22143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22151940fe06f035ea32a4ec4df61f6897396877aa3cdirk
221698e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirkvoid Magick::Image::chromaGreenPrimary(double *x_,double *y_,double *z_) const
22173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  *x_=constImage()->chromaticity.green_primary.x;
22191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  *y_=constImage()->chromaticity.green_primary.y;
222098e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  *z_=constImage()->chromaticity.green_primary.z;
22213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
222398e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirkvoid Magick::Image::chromaRedPrimary(const double x_,const double y_,
222498e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  const double z_)
22253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
22271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->chromaticity.red_primary.x=x_;
22281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->chromaticity.red_primary.y=y_;
222998e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  image()->chromaticity.red_primary.z=z_;
22303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
223298e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirkvoid Magick::Image::chromaRedPrimary(double *x_,double *y_,double *z_) const
22331940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
22341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  *x_=constImage()->chromaticity.red_primary.x;
22351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  *y_=constImage()->chromaticity.red_primary.y;
223698e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  *z_=constImage()->chromaticity.red_primary.z;
22373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
223998e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirkvoid Magick::Image::chromaWhitePoint(const double x_,const double y_,
224098e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  const double z_)
22413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
22431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->chromaticity.white_point.x=x_;
22441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  image()->chromaticity.white_point.y=y_;
224598e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  image()->chromaticity.white_point.z=z_;
22463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
224898e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirkvoid Magick::Image::chromaWhitePoint(double *x_,double *y_,double *z_) const
22493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  *x_=constImage()->chromaticity.white_point.x;
22511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  *y_=constImage()->chromaticity.white_point.y;
225298e4a9ab93295eb5a3db74ccf3e4e905c98b8f0edirk  *z_=constImage()->chromaticity.white_point.z;
22533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
22551940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::clamp(void)
22563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
22581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2259e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ClampImage(image(),exceptionInfo);
226077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
22613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
22631940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::clampChannel(const ChannelType channel_)
22643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
22661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
22675fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
2268e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ClampImage(image(),exceptionInfo);
22691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
227077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
22713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22721940fe06f035ea32a4ec4df61f6897396877aa3cdirk
22731940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::clip(void)
22743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
22761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2277e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ClipImage(image(),exceptionInfo);
227877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
22793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
22811940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::clipPath(const std::string pathname_,const bool inside_)
22823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
22841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
22851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ClipImagePath(image(),pathname_.c_str(),(MagickBooleanType) inside_,
2286e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
228777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
22883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22891940fe06f035ea32a4ec4df61f6897396877aa3cdirk
22901940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::clut(const Image &clutImage_,
22911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const PixelInterpolateMethod method)
22923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
22941940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2295e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ClutImage(image(),clutImage_.constImage(),method,exceptionInfo);
229677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
22973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
22991940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::clutChannel(const ChannelType channel_,
23001940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Image &clutImage_,const PixelInterpolateMethod method)
23013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
23031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
23045fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
2305e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ClutImage(image(),clutImage_.constImage(),method,exceptionInfo);
23061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
230777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
23083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23091940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23101940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::colorize(const unsigned int alpha_,const Color &penColor_)
23113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  colorize(alpha_,alpha_,alpha_,penColor_);
23133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
23151940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::colorize(const unsigned int alphaRed_,
23161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const unsigned int alphaGreen_,const unsigned int alphaBlue_,
23171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Color &penColor_)
23183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  char
2320151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy    blend[MagickPathExtent];
23211940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23221940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
23231940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
23241940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
23261940fe06f035ea32a4ec4df61f6897396877aa3cdirk    target;
23271940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!penColor_.isValid())
232977328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
233077328896b876314656427663695bc7b2c9be3f74dirk      "Pen color argument is invalid");
23311940fe06f035ea32a4ec4df61f6897396877aa3cdirk
2332151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy  FormatLocaleString(blend,MagickPathExtent,"%u/%u/%u",alphaRed_,alphaGreen_,
23331940fe06f035ea32a4ec4df61f6897396877aa3cdirk    alphaBlue_);
23341940fe06f035ea32a4ec4df61f6897396877aa3cdirk
233566a0c5b9e3f8a7fde0bec2869b6d0b87977bca41dirk  target=static_cast<PixelInfo>(penColor_);
23361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2337e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ColorizeImage(image(),blend,&target,exceptionInfo);
23381940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
233977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
23403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23411940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23421940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::colorMap(const size_t index_,const Color &color_)
23433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
23451940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *imageptr;
23463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
23471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  imageptr=image();
23483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
23491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (index_ > (MaxColormapSize-1))
235077328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
23511940fe06f035ea32a4ec4df61f6897396877aa3cdirk      "Colormap index must be less than MaxColormapSize");
23523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
23531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!color_.isValid())
235477328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
235577328896b876314656427663695bc7b2c9be3f74dirk      "Color argument is invalid");
23561940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
23581940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Ensure that colormap size is large enough
23601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (colorMapSize() < (index_+1))
23611940fe06f035ea32a4ec4df61f6897396877aa3cdirk    colorMapSize(index_+1);
23621940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Set color at index in colormap
23641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (imageptr->colormap)[index_]=color_;
23651940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
23661940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23671940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Color Magick::Image::colorMap(const size_t index_) const
23681940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
23691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!constImage()->colormap)
237001efa03bcf9c158fd3bd7fa4f81800d00a1e221ccristy    {
237177328896b876314656427663695bc7b2c9be3f74dirk      throwExceptionExplicit(MagickCore::OptionError,
237277328896b876314656427663695bc7b2c9be3f74dirk        "Image does not contain a colormap");
237301efa03bcf9c158fd3bd7fa4f81800d00a1e221ccristy      return(Color());
237401efa03bcf9c158fd3bd7fa4f81800d00a1e221ccristy    }
23751940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (index_ > constImage()->colors-1)
237777328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,"Index out of range");
23781940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Magick::Color((constImage()->colormap)[index_]));
23801940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
23813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
23821940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::colorMatrix(const size_t order_,
23831940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double *color_matrix_)
23841940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
23851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  KernelInfo
23861940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *kernel_info;
23871940fe06f035ea32a4ec4df61f6897396877aa3cdirk
23881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
23892c57b74e160f9b605d74dec24081309f28b83899cristy  kernel_info=AcquireKernelInfo((const char *) NULL,exceptionInfo);
23908418c7e51974060a1c724e25d700d72fb437174bcristy  if (kernel_info != (KernelInfo *) NULL)
23911940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
23928418c7e51974060a1c724e25d700d72fb437174bcristy      kernel_info->width=order_;
23938418c7e51974060a1c724e25d700d72fb437174bcristy      kernel_info->height=order_;
23948418c7e51974060a1c724e25d700d72fb437174bcristy      kernel_info->values=(MagickRealType *) AcquireAlignedMemory(order_,
23958418c7e51974060a1c724e25d700d72fb437174bcristy        order_*sizeof(*kernel_info->values));
23968418c7e51974060a1c724e25d700d72fb437174bcristy      if (kernel_info->values != (MagickRealType *) NULL)
23978418c7e51974060a1c724e25d700d72fb437174bcristy        {
23988418c7e51974060a1c724e25d700d72fb437174bcristy          MagickCore::Image
23998418c7e51974060a1c724e25d700d72fb437174bcristy            *newImage;
24001940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24018418c7e51974060a1c724e25d700d72fb437174bcristy          for (ssize_t i=0; i < (ssize_t) (order_*order_); i++)
24028418c7e51974060a1c724e25d700d72fb437174bcristy            kernel_info->values[i]=color_matrix_[i];
2403e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk          newImage=ColorMatrixImage(image(),kernel_info,exceptionInfo);
24048418c7e51974060a1c724e25d700d72fb437174bcristy          replaceImage(newImage);
24058418c7e51974060a1c724e25d700d72fb437174bcristy        }
24068418c7e51974060a1c724e25d700d72fb437174bcristy      kernel_info=DestroyKernelInfo(kernel_info);
24071940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
240877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
24091940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
24101940fe06f035ea32a4ec4df61f6897396877aa3cdirk
2411181b2a74351daea0388a98b8e37e13efc53d42c9dirkbool Magick::Image::compare(const Image &reference_) const
24121940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
24131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  bool
24141940fe06f035ea32a4ec4df61f6897396877aa3cdirk    status;
24151940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  Image
24171940fe06f035ea32a4ec4df61f6897396877aa3cdirk    ref=reference_;
24181940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2420181b2a74351daea0388a98b8e37e13efc53d42c9dirk  status=static_cast<bool>(IsImagesEqual(constImage(),ref.constImage(),
2421100c62ceee252ed475fca6a57b3dbaa3d27d2ed9dirk    exceptionInfo));
242277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
24231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(status);
24241940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
24251940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24261940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::compare(const Image &reference_,const MetricType metric_)
24271940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
24281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  double
24291940fe06f035ea32a4ec4df61f6897396877aa3cdirk    distortion=0.0;
24301940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
24321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetImageDistortion(image(),reference_.constImage(),metric_,&distortion,
2433e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
243477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
24351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(distortion);
24361940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
24371940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24381940fe06f035ea32a4ec4df61f6897396877aa3cdirkdouble Magick::Image::compareChannel(const ChannelType channel_,
24391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Image &reference_,const MetricType metric_)
24401940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
24411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  double
24421940fe06f035ea32a4ec4df61f6897396877aa3cdirk    distortion=0.0;
24431940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
24455fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
24461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetImageDistortion(image(),reference_.constImage(),metric_,&distortion,
2447e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
24481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
244977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
24501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(distortion);
24511940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
24521940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24531940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image Magick::Image::compare(const Image &reference_,
24541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const MetricType metric_,double *distortion)
24551940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
24561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
24571940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
24581940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
24601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=CompareImages(image(),reference_.constImage(),metric_,distortion,
2461e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
246277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
24631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (newImage == (MagickCore::Image *) NULL)
24641940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(Magick::Image());
24651940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
24661940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(Magick::Image(newImage));
24671940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
24681940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24691940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image Magick::Image::compareChannel(const ChannelType channel_,
24701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Image &reference_,const MetricType metric_,double *distortion)
24711940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
24721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
24731940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
24741940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
24765fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
24771940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=CompareImages(image(),reference_.constImage(),metric_,distortion,
2478e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
24791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
248077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
24811940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (newImage == (MagickCore::Image *) NULL)
24821940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(Magick::Image());
24831940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
24841940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(Magick::Image(newImage));
24851940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
24861940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24871940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::composite(const Image &compositeImage_,
24881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Geometry &offset_,const CompositeOperator compose_)
24891940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
24901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
24911940fe06f035ea32a4ec4df61f6897396877aa3cdirk    height=rows(),
24921940fe06f035ea32a4ec4df61f6897396877aa3cdirk    width=columns();
24931940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24941940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ssize_t
24951940fe06f035ea32a4ec4df61f6897396877aa3cdirk    x=offset_.xOff(),
24961940fe06f035ea32a4ec4df61f6897396877aa3cdirk    y=offset_.yOff();
24971940fe06f035ea32a4ec4df61f6897396877aa3cdirk
24981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ParseMetaGeometry(static_cast<std::string>(offset_).c_str(),&x,&y,&width,
24991940fe06f035ea32a4ec4df61f6897396877aa3cdirk    &height);
25001940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
25021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
25032b1eb143fee5873d6fb20dfb3fa298ca7f1934ccdirk  CompositeImage(image(),compositeImage_.constImage(),compose_,MagickTrue,
2504e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    x,y,exceptionInfo);
250577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
25061940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
25071940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25081940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::composite(const Image &compositeImage_,
25091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const GravityType gravity_,const CompositeOperator compose_)
25101940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
25111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
25121940fe06f035ea32a4ec4df61f6897396877aa3cdirk    geometry;
25131940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
25151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  SetGeometry(compositeImage_.constImage(),&geometry);
25161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GravityAdjustGeometry(columns(),rows(),gravity_,&geometry);
25171940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
25192b1eb143fee5873d6fb20dfb3fa298ca7f1934ccdirk  CompositeImage(image(),compositeImage_.constImage(),compose_,MagickTrue,
2520e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    geometry.x,geometry.y,exceptionInfo);
252177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
25221940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
25231940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25241940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::composite(const Image &compositeImage_,
25251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const ssize_t xOffset_,const ssize_t yOffset_,
25261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const CompositeOperator compose_)
25271940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
25281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Image supplied as compositeImage is composited with current image and
25291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // results in updating current image.
25301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
25311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
25322b1eb143fee5873d6fb20dfb3fa298ca7f1934ccdirk  CompositeImage(image(),compositeImage_.constImage(),compose_,MagickTrue,
2533e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    xOffset_,yOffset_,exceptionInfo);
253477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
25351940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
25361940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25374ab21d079ec146c4c106925c683a8f9398980856dirkvoid Magick::Image::connectedComponents(const size_t connectivity_)
25384ab21d079ec146c4c106925c683a8f9398980856dirk{
25394ab21d079ec146c4c106925c683a8f9398980856dirk  MagickCore::Image
25404ab21d079ec146c4c106925c683a8f9398980856dirk    *newImage;
25414ab21d079ec146c4c106925c683a8f9398980856dirk
25424ab21d079ec146c4c106925c683a8f9398980856dirk  GetPPException;
25432ca0e9a086cf4f4d9240132badd01860cb2b5824Cristy  newImage=ConnectedComponentsImage(constImage(),connectivity_,
254462e1398b95af43bd1990b6dece2e0e9fb527dd4dCristy    (CCObjectInfo **) NULL,exceptionInfo);
25454ab21d079ec146c4c106925c683a8f9398980856dirk  replaceImage(newImage);
254677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
25474ab21d079ec146c4c106925c683a8f9398980856dirk}
25484ab21d079ec146c4c106925c683a8f9398980856dirk
2549eb68e91158bc0035e3a4aeddf4b99fa09f15493ddirkvoid Magick::Image::contrast(const bool sharpen_)
25501940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
25511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
25521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2553e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ContrastImage(image(),(MagickBooleanType) sharpen_,exceptionInfo);
255477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
25551940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
25561940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25571940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::contrastStretch(const double blackPoint_,
25581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double whitePoint_)
25591940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
25601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
25611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2562e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ContrastStretchImage(image(),blackPoint_,whitePoint_,exceptionInfo);
256377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
25641940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
25651940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25661940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::contrastStretchChannel(const ChannelType channel_,
25671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double blackPoint_,const double whitePoint_)
25681940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
25691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
25701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
25715fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
2572e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ContrastStretchImage(image(),blackPoint_,whitePoint_,exceptionInfo);
25731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
257477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
25751940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
25761940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25771940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::convolve(const size_t order_,const double *kernel_)
25781940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
25791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  KernelInfo
25801940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *kernel_info;
25811940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
25832c57b74e160f9b605d74dec24081309f28b83899cristy  kernel_info=AcquireKernelInfo((const char *) NULL,exceptionInfo);
25841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  kernel_info->width=order_;
25851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  kernel_info->height=order_;
2586d97115ebc5ba6f5c78df83f862181739526c552edirk  kernel_info->x=(ssize_t) (order_-1)/2;
2587d97115ebc5ba6f5c78df83f862181739526c552edirk  kernel_info->y=(ssize_t) (order_-1)/2;
25881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  kernel_info->values=(MagickRealType *) AcquireAlignedMemory(order_,
25891940fe06f035ea32a4ec4df61f6897396877aa3cdirk    order_*sizeof(*kernel_info->values));
25901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (kernel_info->values != (MagickRealType *) NULL)
25911940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
25921940fe06f035ea32a4ec4df61f6897396877aa3cdirk      MagickCore::Image
25931940fe06f035ea32a4ec4df61f6897396877aa3cdirk        *newImage;
25941940fe06f035ea32a4ec4df61f6897396877aa3cdirk
25951940fe06f035ea32a4ec4df61f6897396877aa3cdirk      for (ssize_t i=0; i < (ssize_t) (order_*order_); i++)
25961940fe06f035ea32a4ec4df61f6897396877aa3cdirk        kernel_info->values[i]=kernel_[i];
2597e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk      newImage=ConvolveImage(image(),kernel_info,exceptionInfo);
25981940fe06f035ea32a4ec4df61f6897396877aa3cdirk      replaceImage(newImage);
25991940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
26001940fe06f035ea32a4ec4df61f6897396877aa3cdirk  kernel_info=DestroyKernelInfo(kernel_info);
260177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
26021940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
26031940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26041f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirkvoid Magick::Image::copyPixels(const Image &source_,const Geometry &geometry_,
26051f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  const Offset &offset_)
26061f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk{
26071f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  const OffsetInfo
26081f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk    offset=offset_;
26091f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk
26101f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  const RectangleInfo
26111f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk    geometry=geometry_;
26121f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk
26131f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  GetPPException;
26141f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  (void) CopyImagePixels(image(),source_.constImage(),&geometry,&offset,
26151f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk    exceptionInfo);
26161f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk  ThrowImageException;
26171f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk}
26181f5fd5aeaee99fd19bacf7a1350ce73cd5ab1825dirk
26191940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::crop(const Geometry &geometry_)
26201940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
26211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
26221940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
26231940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
26251940fe06f035ea32a4ec4df61f6897396877aa3cdirk    cropInfo=geometry_;
26261940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2628e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=CropImage(constImage(),&cropInfo,exceptionInfo);
26291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
263077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
26311940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
26321940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26331940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::cycleColormap(const ssize_t amount_)
26341940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
26351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
26361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2637e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  CycleColormapImage(image(),amount_,exceptionInfo);
263877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
26391940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
26401940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26411940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::decipher(const std::string &passphrase_)
26421940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
26431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
26441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2645e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  DecipherImage(image(),passphrase_.c_str(),exceptionInfo);
264677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
26471940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
26481940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26491940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::defineSet(const std::string &magick_,
26501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &key_,bool flag_)
26511940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
26521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  std::string
26531940fe06f035ea32a4ec4df61f6897396877aa3cdirk    definition;
26541940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26551940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
26561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  definition=magick_ + ":" + key_;
26571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (flag_)
26581940fe06f035ea32a4ec4df61f6897396877aa3cdirk    (void) SetImageOption(imageInfo(),definition.c_str(),"");
26591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
26601940fe06f035ea32a4ec4df61f6897396877aa3cdirk    DeleteImageOption(imageInfo(),definition.c_str());
26611940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
26621940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26631940fe06f035ea32a4ec4df61f6897396877aa3cdirkbool Magick::Image::defineSet(const std::string &magick_,
26641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &key_ ) const
26651940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
26661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const char
26671940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *option;
26681940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  std::string
26701940fe06f035ea32a4ec4df61f6897396877aa3cdirk    key;
26711940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  key=magick_ + ":" + key_;
26731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  option=GetImageOption(constImageInfo(),key.c_str());
26741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (option)
26751940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(true);
26761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(false);
26771940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
26781940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26791940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::defineValue(const std::string &magick_,
26801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &key_,const std::string &value_)
26811940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
26821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  std::string
26831940fe06f035ea32a4ec4df61f6897396877aa3cdirk    format,
26841940fe06f035ea32a4ec4df61f6897396877aa3cdirk    option;
26851940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26861940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
26871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  format=magick_ + ":" + key_;
26881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  option=value_;
26891940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) SetImageOption(imageInfo(),format.c_str(),option.c_str());
26901940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
26911940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26921940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::defineValue(const std::string &magick_,
26931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &key_) const
26941940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
26951940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const char
26961940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *option;
26971940fe06f035ea32a4ec4df61f6897396877aa3cdirk
26981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  std::string
26991940fe06f035ea32a4ec4df61f6897396877aa3cdirk    definition;
27001940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  definition=magick_ + ":" + key_;
27021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  option=GetImageOption(constImageInfo(),definition.c_str());
27031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (option)
27041940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(std::string(option));
27051940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(std::string());
27061940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
27071940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27081940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::deskew(const double threshold_)
27091940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
27101940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
27111940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
27121940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2714e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=DeskewImage(constImage(),threshold_,exceptionInfo);
27151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
271677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
27171940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
27181940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27191940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::despeckle(void)
27201940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
27211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
27221940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
27231940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2725e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=DespeckleImage(constImage(),exceptionInfo);
27261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
272777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
27281940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
27291940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27301940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::display(void)
27311940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
27321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2733e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  DisplayImages(imageInfo(),image(),exceptionInfo);
273477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
27351940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
27361940fe06f035ea32a4ec4df61f6897396877aa3cdirk
2737827944d54938c1f8a74ff53cd35c11801060d995dirkvoid Magick::Image::distort(const DistortMethod method_,
27381940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t numberArguments_,const double *arguments_,const bool bestfit_)
27391940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
27401940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
27411940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
27421940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
27441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=DistortImage(constImage(), method_,numberArguments_,arguments_,
2745e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    bestfit_ == true ? MagickTrue : MagickFalse,exceptionInfo);
27461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
274777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
27481940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
27491940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27501940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::draw(const Magick::Drawable &drawable_)
27511940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
27521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  DrawingWand
27531940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *wand;
27541940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27551940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
27561940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27572e1ade784b83a362b445b118342ef9e28db4ab06dirk  wand=AcquireDrawingWand(options()->drawInfo(),image());
27581940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if(wand)
27601940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
27611940fe06f035ea32a4ec4df61f6897396877aa3cdirk      drawable_.operator()(wand);
27621940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27631940fe06f035ea32a4ec4df61f6897396877aa3cdirk      DrawRender(wand);
27641940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27651940fe06f035ea32a4ec4df61f6897396877aa3cdirk      ClonePPDrawException(wand);
27661940fe06f035ea32a4ec4df61f6897396877aa3cdirk      wand=DestroyDrawingWand(wand);
276707f84e72b205d18eb8ad35380af95351d9f0a1a3dirk      ThrowPPDrawException(quiet());
27681940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
27691940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
27701940fe06f035ea32a4ec4df61f6897396877aa3cdirk
2771263b876b613ee3cddda42810a4b421a73895327cdirkvoid Magick::Image::draw(const std::vector<Magick::Drawable> &drawable_)
27721940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
27731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  DrawingWand
27741940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *wand;
27751940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
27771940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27782e1ade784b83a362b445b118342ef9e28db4ab06dirk  wand= AcquireDrawingWand(options()->drawInfo(),image());
27791940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if(wand)
27811940fe06f035ea32a4ec4df61f6897396877aa3cdirk    {
2782263b876b613ee3cddda42810a4b421a73895327cdirk      for (std::vector<Magick::Drawable>::const_iterator p = drawable_.begin();
27831940fe06f035ea32a4ec4df61f6897396877aa3cdirk           p != drawable_.end(); p++ )
27841940fe06f035ea32a4ec4df61f6897396877aa3cdirk        {
27851940fe06f035ea32a4ec4df61f6897396877aa3cdirk          p->operator()(wand);
278677328896b876314656427663695bc7b2c9be3f74dirk          if (DrawGetExceptionType(wand) != MagickCore::UndefinedException)
27871940fe06f035ea32a4ec4df61f6897396877aa3cdirk            break;
27881940fe06f035ea32a4ec4df61f6897396877aa3cdirk        }
27891940fe06f035ea32a4ec4df61f6897396877aa3cdirk
279077328896b876314656427663695bc7b2c9be3f74dirk      if (DrawGetExceptionType(wand) == MagickCore::UndefinedException)
27911940fe06f035ea32a4ec4df61f6897396877aa3cdirk        DrawRender(wand);
27921940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27931940fe06f035ea32a4ec4df61f6897396877aa3cdirk      ClonePPDrawException(wand);
27941940fe06f035ea32a4ec4df61f6897396877aa3cdirk      wand=DestroyDrawingWand(wand);
279507f84e72b205d18eb8ad35380af95351d9f0a1a3dirk      ThrowPPDrawException(quiet());
27961940fe06f035ea32a4ec4df61f6897396877aa3cdirk    }
27971940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
27981940fe06f035ea32a4ec4df61f6897396877aa3cdirk
27991940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::edge(const double radius_)
28001940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
28011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
28021940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
28031940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2805e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=EdgeImage(constImage(),radius_,exceptionInfo);
28061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
280777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
28081940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
28091940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28101940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::emboss(const double radius_,const double sigma_)
28111940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
28121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
28131940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
28141940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2816e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=EmbossImage(constImage(),radius_,sigma_,exceptionInfo);
28171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
281877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
28191940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
28201940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28211940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::encipher(const std::string &passphrase_)
28221940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
28231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
28241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2825e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  EncipherImage(image(),passphrase_.c_str(),exceptionInfo);
282677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
28271940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
28281940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28291940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::enhance(void)
28301940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
28311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
28321940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
28331940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2835e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=EnhanceImage(constImage(),exceptionInfo);
28361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
283777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
28381940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
28391940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28401940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::equalize(void)
28411940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
28421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
28431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2844e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  EqualizeImage(image(),exceptionInfo);
284577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
28461940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
28471940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28481940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::erase(void)
28491940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
28501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
28511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2852e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) SetImageBackgroundColor(image(),exceptionInfo);
285377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
28541940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
28551940fe06f035ea32a4ec4df61f6897396877aa3cdirk
28565d4260ad9e283f1351524d0d2745560fc853e977dirkvoid Magick::Image::evaluate(const ChannelType channel_,
28575d4260ad9e283f1351524d0d2745560fc853e977dirk  const MagickEvaluateOperator operator_,double rvalue_)
28585d4260ad9e283f1351524d0d2745560fc853e977dirk{
28595d4260ad9e283f1351524d0d2745560fc853e977dirk  GetPPException;
28605d4260ad9e283f1351524d0d2745560fc853e977dirk  GetAndSetPPChannelMask(channel_);
28615d4260ad9e283f1351524d0d2745560fc853e977dirk  EvaluateImage(image(),operator_,rvalue_,exceptionInfo);
28625d4260ad9e283f1351524d0d2745560fc853e977dirk  RestorePPChannelMask;
28635d4260ad9e283f1351524d0d2745560fc853e977dirk  ThrowImageException;
28645d4260ad9e283f1351524d0d2745560fc853e977dirk}
28655d4260ad9e283f1351524d0d2745560fc853e977dirk
28660634367b7f22185171e7cd6e6ddc890db11951efdirkvoid Magick::Image::evaluate(const ChannelType channel_,
28670634367b7f22185171e7cd6e6ddc890db11951efdirk  const MagickFunction function_,const size_t number_parameters_,
28680634367b7f22185171e7cd6e6ddc890db11951efdirk  const double *parameters_)
28690634367b7f22185171e7cd6e6ddc890db11951efdirk{
28700634367b7f22185171e7cd6e6ddc890db11951efdirk  GetPPException;
28710634367b7f22185171e7cd6e6ddc890db11951efdirk  GetAndSetPPChannelMask(channel_);
28720634367b7f22185171e7cd6e6ddc890db11951efdirk  FunctionImage(image(),function_,number_parameters_,parameters_,
28730634367b7f22185171e7cd6e6ddc890db11951efdirk    exceptionInfo);
28740634367b7f22185171e7cd6e6ddc890db11951efdirk  RestorePPChannelMask;
28750634367b7f22185171e7cd6e6ddc890db11951efdirk  ThrowImageException;
28760634367b7f22185171e7cd6e6ddc890db11951efdirk}
28770634367b7f22185171e7cd6e6ddc890db11951efdirk
28780634367b7f22185171e7cd6e6ddc890db11951efdirkvoid Magick::Image::evaluate(const ChannelType channel_,const ssize_t x_,
28790634367b7f22185171e7cd6e6ddc890db11951efdirk  const ssize_t y_,const size_t columns_,const size_t rows_,
28805d4260ad9e283f1351524d0d2745560fc853e977dirk  const MagickEvaluateOperator operator_,const double rvalue_)
28815d4260ad9e283f1351524d0d2745560fc853e977dirk{
28825d4260ad9e283f1351524d0d2745560fc853e977dirk  RectangleInfo
28835d4260ad9e283f1351524d0d2745560fc853e977dirk    geometry;
28845d4260ad9e283f1351524d0d2745560fc853e977dirk
28855d4260ad9e283f1351524d0d2745560fc853e977dirk  MagickCore::Image
28865d4260ad9e283f1351524d0d2745560fc853e977dirk    *cropImage;
28875d4260ad9e283f1351524d0d2745560fc853e977dirk
28885d4260ad9e283f1351524d0d2745560fc853e977dirk  geometry.width = columns_;
28895d4260ad9e283f1351524d0d2745560fc853e977dirk  geometry.height = rows_;
28905d4260ad9e283f1351524d0d2745560fc853e977dirk  geometry.x = x_;
28915d4260ad9e283f1351524d0d2745560fc853e977dirk  geometry.y = y_;
28925d4260ad9e283f1351524d0d2745560fc853e977dirk
28935d4260ad9e283f1351524d0d2745560fc853e977dirk  GetPPException;
28945d4260ad9e283f1351524d0d2745560fc853e977dirk  cropImage=CropImage(image(),&geometry,exceptionInfo);
28955d4260ad9e283f1351524d0d2745560fc853e977dirk  GetAndSetPPChannelMask(channel_);
28965d4260ad9e283f1351524d0d2745560fc853e977dirk  EvaluateImage(cropImage,operator_,rvalue_,exceptionInfo);
28975d4260ad9e283f1351524d0d2745560fc853e977dirk  RestorePPChannelMask;
28985d4260ad9e283f1351524d0d2745560fc853e977dirk  (void) CompositeImage(image(),cropImage,image()->alpha_trait ==
28995d4260ad9e283f1351524d0d2745560fc853e977dirk    BlendPixelTrait ? OverCompositeOp : CopyCompositeOp,MagickFalse,
29005d4260ad9e283f1351524d0d2745560fc853e977dirk    geometry.x,geometry.y,exceptionInfo );
29015d4260ad9e283f1351524d0d2745560fc853e977dirk  cropImage=DestroyImageList(cropImage);
29025d4260ad9e283f1351524d0d2745560fc853e977dirk  ThrowImageException;
29035d4260ad9e283f1351524d0d2745560fc853e977dirk}
29045d4260ad9e283f1351524d0d2745560fc853e977dirk
29051940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::extent(const Geometry &geometry_ )
29061940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
29071940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
29081940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
29091940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29101940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
29111940fe06f035ea32a4ec4df61f6897396877aa3cdirk    extentInfo=geometry_;
29121940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
29141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  extentInfo.x=geometry_.xOff();
29151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  extentInfo.y=geometry_.yOff();
29161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2917e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ExtentImage(image(),&extentInfo,exceptionInfo);
29181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
291977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
29201940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
29211940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29221940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::extent(const Geometry &geometry_,
29231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Color &backgroundColor_)
29241940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
29251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  backgroundColor(backgroundColor_);
29261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  extent(geometry_);
29271940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
29281940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29291940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::extent(const Geometry &geometry_,
29301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Color &backgroundColor_,const GravityType gravity_)
29311940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
29321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  backgroundColor(backgroundColor_);
29331940fe06f035ea32a4ec4df61f6897396877aa3cdirk  extent(geometry_,gravity_);
29341940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
29351940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29361940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::extent(const Geometry &geometry_,
29371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const GravityType gravity_)
29381940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
29391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
29401940fe06f035ea32a4ec4df61f6897396877aa3cdirk    geometry;
29411940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  SetGeometry(image(),&geometry);
29431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  geometry.width=geometry_.width();
29441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  geometry.height=geometry_.height();
29451940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GravityAdjustGeometry(image()->columns,image()->rows,gravity_,&geometry);
29461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  extent(geometry);
29471940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
29481940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29491940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::flip(void)
29501940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
29511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
29521940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
29531940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
2955e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=FlipImage(constImage(),exceptionInfo);
29561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
295777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
29581940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
29591940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29601940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillAlpha(const ssize_t x_,const ssize_t y_,
2961223843f66554713ee926b09f958ff6bfdb5acb61dirk  const unsigned int alpha_,const bool invert_)
29621940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
29631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
29641940fe06f035ea32a4ec4df61f6897396877aa3cdirk    target;
29651940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
2967223843f66554713ee926b09f958ff6bfdb5acb61dirk
296866a0c5b9e3f8a7fde0bec2869b6d0b87977bca41dirk  target=static_cast<PixelInfo>(pixelColor(x_,y_));
29691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  target.alpha=alpha_;
2970223843f66554713ee926b09f958ff6bfdb5acb61dirk  GetPPException;
29715fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(AlphaChannel);
2972223843f66554713ee926b09f958ff6bfdb5acb61dirk  FloodfillPaintImage(image(),options()->drawInfo(),&target,x_,y_,
2973223843f66554713ee926b09f958ff6bfdb5acb61dirk    (MagickBooleanType)invert_,exceptionInfo);
2974223843f66554713ee926b09f958ff6bfdb5acb61dirk  RestorePPChannelMask;
297577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
2976223843f66554713ee926b09f958ff6bfdb5acb61dirk}
2977223843f66554713ee926b09f958ff6bfdb5acb61dirk
2978223843f66554713ee926b09f958ff6bfdb5acb61dirkvoid Magick::Image::floodFillAlpha(const ssize_t x_,const ssize_t y_,
2979223843f66554713ee926b09f958ff6bfdb5acb61dirk  const unsigned int alpha_,const Color &target_,const bool invert_)
2980223843f66554713ee926b09f958ff6bfdb5acb61dirk{
2981223843f66554713ee926b09f958ff6bfdb5acb61dirk  PixelInfo
2982223843f66554713ee926b09f958ff6bfdb5acb61dirk    target;
2983223843f66554713ee926b09f958ff6bfdb5acb61dirk
2984223843f66554713ee926b09f958ff6bfdb5acb61dirk  modifyImage();
29851940fe06f035ea32a4ec4df61f6897396877aa3cdirk
298666a0c5b9e3f8a7fde0bec2869b6d0b87977bca41dirk  target=static_cast<PixelInfo>(target_);
2987223843f66554713ee926b09f958ff6bfdb5acb61dirk  target.alpha=alpha_;
29881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
29895fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(AlphaChannel);
2990223843f66554713ee926b09f958ff6bfdb5acb61dirk  FloodfillPaintImage(image(),options()->drawInfo(),&target,x_,y_,
2991223843f66554713ee926b09f958ff6bfdb5acb61dirk    (MagickBooleanType)invert_,exceptionInfo);
2992223843f66554713ee926b09f958ff6bfdb5acb61dirk  RestorePPChannelMask;
299377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
29941940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
29951940fe06f035ea32a4ec4df61f6897396877aa3cdirk
29961940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillColor(const Geometry &point_,
2997223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Color &fillColor_,const bool invert_)
29981940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
2999223843f66554713ee926b09f958ff6bfdb5acb61dirk  floodFillColor(point_.xOff(),point_.yOff(),fillColor_,invert_);
30001940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30011940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30021940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillColor(const ssize_t x_,const ssize_t y_,
3003223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Color &fillColor_,const bool invert_)
30041940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
3005223843f66554713ee926b09f958ff6bfdb5acb61dirk  PixelInfo
3006223843f66554713ee926b09f958ff6bfdb5acb61dirk    pixel;
3007223843f66554713ee926b09f958ff6bfdb5acb61dirk
3008223843f66554713ee926b09f958ff6bfdb5acb61dirk  modifyImage();
3009223843f66554713ee926b09f958ff6bfdb5acb61dirk
3010223843f66554713ee926b09f958ff6bfdb5acb61dirk  pixel=static_cast<PixelInfo>(pixelColor(x_,y_));
3011223843f66554713ee926b09f958ff6bfdb5acb61dirk  floodFill(x_,y_,(Magick::Image *)NULL,fillColor_,&pixel,invert_);
30121940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30131940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30141940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillColor(const Geometry &point_,
3015223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Color &fillColor_,const Magick::Color &borderColor_,
3016223843f66554713ee926b09f958ff6bfdb5acb61dirk  const bool invert_)
30171940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
3018223843f66554713ee926b09f958ff6bfdb5acb61dirk  floodFillColor(point_.xOff(),point_.yOff(),fillColor_,borderColor_,invert_);
30191940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30201940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30211940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillColor(const ssize_t x_,const ssize_t y_,
3022223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Color &fillColor_,const Magick::Color &borderColor_,
3023223843f66554713ee926b09f958ff6bfdb5acb61dirk  const bool invert_)
30241940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
3025223843f66554713ee926b09f958ff6bfdb5acb61dirk  PixelInfo
3026223843f66554713ee926b09f958ff6bfdb5acb61dirk    pixel;
3027223843f66554713ee926b09f958ff6bfdb5acb61dirk
3028223843f66554713ee926b09f958ff6bfdb5acb61dirk  modifyImage();
3029223843f66554713ee926b09f958ff6bfdb5acb61dirk
3030223843f66554713ee926b09f958ff6bfdb5acb61dirk  pixel=static_cast<PixelInfo>(borderColor_);
3031223843f66554713ee926b09f958ff6bfdb5acb61dirk  floodFill(x_,y_,(Magick::Image *)NULL,fillColor_,&pixel,invert_);
30321940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30331940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30341940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillTexture(const Magick::Geometry &point_,
3035223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Image &texture_,const bool invert_)
30361940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
3037223843f66554713ee926b09f958ff6bfdb5acb61dirk  floodFillTexture(point_.xOff(),point_.yOff(),texture_,invert_);
30381940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30391940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30401940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillTexture(const ssize_t x_,const ssize_t y_,
3041223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Image &texture_,const bool invert_)
30421940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
3043223843f66554713ee926b09f958ff6bfdb5acb61dirk  PixelInfo
3044223843f66554713ee926b09f958ff6bfdb5acb61dirk    pixel;
30451940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
30471940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3048223843f66554713ee926b09f958ff6bfdb5acb61dirk  pixel=static_cast<PixelInfo>(pixelColor(x_,y_));
3049223843f66554713ee926b09f958ff6bfdb5acb61dirk  floodFill(x_,y_,&texture_,Magick::Color(),&pixel,invert_);
30501940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30511940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30521940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillTexture(const Magick::Geometry &point_,
3053223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Image &texture_,const Magick::Color &borderColor_,
3054223843f66554713ee926b09f958ff6bfdb5acb61dirk  const bool invert_)
30551940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
3056223843f66554713ee926b09f958ff6bfdb5acb61dirk  floodFillTexture(point_.xOff(),point_.yOff(),texture_,borderColor_,invert_);
30571940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30581940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30591940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::floodFillTexture(const ssize_t x_,const ssize_t y_,
3060223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Image &texture_,const Magick::Color &borderColor_,
3061223843f66554713ee926b09f958ff6bfdb5acb61dirk  const bool invert_)
30621940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
30631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
3064223843f66554713ee926b09f958ff6bfdb5acb61dirk    pixel;
30651940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
30671940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3068223843f66554713ee926b09f958ff6bfdb5acb61dirk  pixel=static_cast<PixelInfo>(borderColor_);
3069223843f66554713ee926b09f958ff6bfdb5acb61dirk  floodFill(x_,y_,&texture_,Magick::Color(),&pixel,invert_);
30701940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30711940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30721940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::flop(void)
30731940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
30741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
30751940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
30761940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30771940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3078e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=FlopImage(constImage(),exceptionInfo);
30791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
308077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
30811940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30821940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30831940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::fontTypeMetrics(const std::string &text_,
30841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  TypeMetric *metrics)
30851940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
30861940fe06f035ea32a4ec4df61f6897396877aa3cdirk  DrawInfo
30871940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *drawInfo;
30881940fe06f035ea32a4ec4df61f6897396877aa3cdirk
30891940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo=options()->drawInfo();
30901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo->text=const_cast<char *>(text_.c_str());
30911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3092e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  GetTypeMetrics(image(),drawInfo,&(metrics->_typeMetric),exceptionInfo);
30931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  drawInfo->text=0;
309477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
30951940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
30961940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3097e6e40ada97dd07b629238f845f92c9c0b75dc487dirkvoid Magick::Image::fontTypeMetricsMultiline(const std::string &text_,
3098e6e40ada97dd07b629238f845f92c9c0b75dc487dirk  TypeMetric *metrics)
3099e6e40ada97dd07b629238f845f92c9c0b75dc487dirk{
3100e6e40ada97dd07b629238f845f92c9c0b75dc487dirk  DrawInfo
3101e6e40ada97dd07b629238f845f92c9c0b75dc487dirk    *drawInfo;
3102e6e40ada97dd07b629238f845f92c9c0b75dc487dirk
3103e6e40ada97dd07b629238f845f92c9c0b75dc487dirk  drawInfo=options()->drawInfo();
3104e6e40ada97dd07b629238f845f92c9c0b75dc487dirk  drawInfo->text=const_cast<char *>(text_.c_str());
3105e6e40ada97dd07b629238f845f92c9c0b75dc487dirk  GetPPException;
3106e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  GetMultilineTypeMetrics(image(),drawInfo,&(metrics->_typeMetric),exceptionInfo);
3107e6e40ada97dd07b629238f845f92c9c0b75dc487dirk  drawInfo->text=0;
310877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
3109e6e40ada97dd07b629238f845f92c9c0b75dc487dirk}
3110e6e40ada97dd07b629238f845f92c9c0b75dc487dirk
31111940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::frame(const Geometry &geometry_)
31121940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
31131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  FrameInfo
31141940fe06f035ea32a4ec4df61f6897396877aa3cdirk    info;
31151940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
31171940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
31181940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.x=static_cast<ssize_t>(geometry_.width());
31201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.y=static_cast<ssize_t>(geometry_.height());
31211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.width=columns() + (static_cast<size_t>(info.x) << 1);
31221940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.height=rows() + (static_cast<size_t>(info.y) << 1);
31231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.outer_bevel=geometry_.xOff();
31241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.inner_bevel=geometry_.yOff();
31251940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3127e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=FrameImage(constImage(),&info,image()->compose,exceptionInfo);
31281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
312977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
31301940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
31311940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31321940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::frame(const size_t width_,const size_t height_,
3133867bea1210aaeb56a9709c5a63340016a667a427dirk  const ssize_t innerBevel_,const ssize_t outerBevel_)
31341940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
31351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  FrameInfo
31361940fe06f035ea32a4ec4df61f6897396877aa3cdirk    info;
31371940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31381940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
31391940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
31401940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.x=static_cast<ssize_t>(width_);
31421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.y=static_cast<ssize_t>(height_);
31431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.width=columns() + (static_cast<size_t>(info.x) << 1);
31441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.height=rows() + (static_cast<size_t>(info.y) << 1);
31451940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.outer_bevel=static_cast<ssize_t>(outerBevel_);
31461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  info.inner_bevel=static_cast<ssize_t>(innerBevel_);
31471940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3149e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=FrameImage(constImage(),&info,image()->compose,exceptionInfo);
31501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
315177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
31521940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
31531940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31541940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::fx(const std::string expression_)
31551940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
31561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
31571940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
31581940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3160e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=FxImage(constImage(),expression_.c_str(),exceptionInfo);
31611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
316277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
31631940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
31641940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31651940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::fx(const std::string expression_,
31661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::ChannelType channel_)
31671940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
31681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
31691940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
31701940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31711940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
31725fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
3173e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=FxImage(constImage(),expression_.c_str(),exceptionInfo);
31741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
31751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
317677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
31771940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
31781940fe06f035ea32a4ec4df61f6897396877aa3cdirk
31791940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::gamma(const double gamma_)
31801940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
31811940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
31821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3183e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  GammaImage(image(),gamma_,exceptionInfo);
318477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
31853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
31863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
31871940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::gamma(const double gammaRed_,const double gammaGreen_,
31881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double gammaBlue_)
31893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
31903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
31911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
31927e2bdfa8375d6f4c069730085aa5e18b31b6ac62dirk  GetAndSetPPChannelMask(RedChannel);
31937e2bdfa8375d6f4c069730085aa5e18b31b6ac62dirk  (void) GammaImage(image(),gammaRed_,exceptionInfo);
31947e2bdfa8375d6f4c069730085aa5e18b31b6ac62dirk  SetPPChannelMask(GreenChannel);
31957e2bdfa8375d6f4c069730085aa5e18b31b6ac62dirk  (void) GammaImage(image(),gammaGreen_,exceptionInfo);
31967e2bdfa8375d6f4c069730085aa5e18b31b6ac62dirk  SetPPChannelMask(BlueChannel);
31977e2bdfa8375d6f4c069730085aa5e18b31b6ac62dirk  (void) GammaImage(image(),gammaBlue_,exceptionInfo);
31987e2bdfa8375d6f4c069730085aa5e18b31b6ac62dirk  RestorePPChannelMask;
319977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
32003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
32011940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3202b5af2acfbf05cc6af1fc4a69d1fda2f497ca9719dirkvoid Magick::Image::gaussianBlur(const double radius_,const double sigma_)
32033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
32041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
32051940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
32061940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32071940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3208b5af2acfbf05cc6af1fc4a69d1fda2f497ca9719dirk  newImage=GaussianBlurImage(constImage(),radius_,sigma_,exceptionInfo);
32091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
321077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
32113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
32123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
32131940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::gaussianBlurChannel(const ChannelType channel_,
3214b5af2acfbf05cc6af1fc4a69d1fda2f497ca9719dirk  const double radius_,const double sigma_)
32153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
32161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
32171940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
32183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
32191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
32205fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
3221b5af2acfbf05cc6af1fc4a69d1fda2f497ca9719dirk  newImage=GaussianBlurImage(constImage(),radius_,sigma_,exceptionInfo);
32221940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
32231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
322477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
32253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
32263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
32271940fe06f035ea32a4ec4df61f6897396877aa3cdirkconst Magick::Quantum *Magick::Image::getConstPixels(const ssize_t x_,
32281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const ssize_t y_,const size_t columns_,const size_t rows_) const
32293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
32301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Quantum
32311940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *p;
32321940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32331940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
32341d4a6951ace4a184f51cfd8c25b1586c6453be96cristy  p=GetVirtualPixels(constImage(),x_, y_,columns_, rows_,exceptionInfo);
323577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
32361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(p);
32373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
32381940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32391940fe06f035ea32a4ec4df61f6897396877aa3cdirkconst void *Magick::Image::getConstMetacontent(void) const
32403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
32411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const void
32421940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *result;
32431940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  result=GetVirtualMetacontent(constImage());
32451940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32461940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if(!result)
324777328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
324877328896b876314656427663695bc7b2c9be3f74dirk      "Unable to retrieve meta content.");
32491940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(result);
32513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
32523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
32531940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid *Magick::Image::getMetacontent(void )
32543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
32551940fe06f035ea32a4ec4df61f6897396877aa3cdirk  void
32561940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *result;
32571940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  result=GetAuthenticMetacontent(image());
32591940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if(!result)
326177328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
326277328896b876314656427663695bc7b2c9be3f74dirk      "Unable to retrieve meta content.");
32631940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(result);
32653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
32663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
32671940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Quantum *Magick::Image::getPixels(const ssize_t x_,const ssize_t y_,
32681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t columns_,const size_t rows_)
32693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
32701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  Quantum
32711940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *result;
32721940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
32741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
32751d4a6951ace4a184f51cfd8c25b1586c6453be96cristy  result=GetAuthenticPixels(image(),x_, y_,columns_,rows_,exceptionInfo);
327677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
32773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
32781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(result);
32793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
32801940fe06f035ea32a4ec4df61f6897396877aa3cdirk
32817f150fdaccb38c6289ee9f3f2230b6ed3b0a56d0dirkvoid Magick::Image::grayscale(const PixelIntensityMethod method_)
328248f358a1cd1920311b1f884d79829788200ccc2ddirk{
328348f358a1cd1920311b1f884d79829788200ccc2ddirk  modifyImage();
328448f358a1cd1920311b1f884d79829788200ccc2ddirk  GetPPException;
328548f358a1cd1920311b1f884d79829788200ccc2ddirk  (void) GrayscaleImage(image(),method_,exceptionInfo);
328677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
328748f358a1cd1920311b1f884d79829788200ccc2ddirk}
328848f358a1cd1920311b1f884d79829788200ccc2ddirk
32891940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid  Magick::Image::haldClut(const Image &clutImage_)
32903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
32911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
32921940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3293e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) HaldClutImage(image(),clutImage_.constImage(),exceptionInfo);
329477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
32953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
32963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3297c8c49d48975358aa8c6e14e113ef4c135e90b212dirkvoid Magick::Image::houghLine(const size_t width_,const size_t height_,
3298c8c49d48975358aa8c6e14e113ef4c135e90b212dirk  const size_t threshold_)
3299c8c49d48975358aa8c6e14e113ef4c135e90b212dirk{
3300c8c49d48975358aa8c6e14e113ef4c135e90b212dirk  MagickCore::Image
3301c8c49d48975358aa8c6e14e113ef4c135e90b212dirk    *newImage;
3302c8c49d48975358aa8c6e14e113ef4c135e90b212dirk
3303c8c49d48975358aa8c6e14e113ef4c135e90b212dirk  GetPPException;
3304c8c49d48975358aa8c6e14e113ef4c135e90b212dirk  newImage=HoughLineImage(constImage(),width_,height_,threshold_,
3305e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
3306c8c49d48975358aa8c6e14e113ef4c135e90b212dirk  replaceImage(newImage);
330777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
3308c8c49d48975358aa8c6e14e113ef4c135e90b212dirk}
3309c8c49d48975358aa8c6e14e113ef4c135e90b212dirk
3310ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirkMagick::ImageType Magick::Image::identifyType(void) const
3311ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk{
3312ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk  ImageType
3313ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk    image_type;
3314ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk
3315ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk  GetPPException;
3316ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk  image_type=IdentifyImageType(constImage(),exceptionInfo);
3317ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk  ThrowImageException;
3318ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk  return(image_type);
3319ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk}
3320ab4f0bb4e2c2d3e3e61408499755fa710f15e18fdirk
33211940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::implode(const double factor_)
33223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
33231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
33241940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
33251940fe06f035ea32a4ec4df61f6897396877aa3cdirk
33261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
33271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=ImplodeImage(constImage(),factor_,image()->interpolate,
3328e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
33291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
333077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
33313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
33323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
33331940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::inverseFourierTransform(const Image &phase_)
33343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
33351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  inverseFourierTransform(phase_,true);
33363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
33371940fe06f035ea32a4ec4df61f6897396877aa3cdirk
33381940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::inverseFourierTransform(const Image &phase_,
33391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const bool magnitude_)
33403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
33411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
33421940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
33431940fe06f035ea32a4ec4df61f6897396877aa3cdirk
33441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
33451940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=InverseFourierTransformImage(constImage(),phase_.constImage(),
3346e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    magnitude_ == true ? MagickTrue : MagickFalse,exceptionInfo);
33471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
334877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
33493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
33503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
33514412c6816cd42de22d222b5a03938e9e0797efb3dirkvoid Magick::Image::kuwahara(const double radius_,const double sigma_)
3352a6045f5b5bf02334dab8f587e5284dd4fc0e2806dirk{
3353a6045f5b5bf02334dab8f587e5284dd4fc0e2806dirk  MagickCore::Image
3354a6045f5b5bf02334dab8f587e5284dd4fc0e2806dirk    *newImage;
3355a6045f5b5bf02334dab8f587e5284dd4fc0e2806dirk
3356a6045f5b5bf02334dab8f587e5284dd4fc0e2806dirk  GetPPException;
33574412c6816cd42de22d222b5a03938e9e0797efb3dirk  newImage=KuwaharaImage(constImage(),radius_,sigma_,exceptionInfo);
3358a6045f5b5bf02334dab8f587e5284dd4fc0e2806dirk  replaceImage(newImage);
335977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
3360a6045f5b5bf02334dab8f587e5284dd4fc0e2806dirk}
3361a6045f5b5bf02334dab8f587e5284dd4fc0e2806dirk
33624412c6816cd42de22d222b5a03938e9e0797efb3dirkvoid Magick::Image::kuwaharaChannel(const ChannelType channel_,
33634412c6816cd42de22d222b5a03938e9e0797efb3dirk  const double radius_,const double sigma_)
33644412c6816cd42de22d222b5a03938e9e0797efb3dirk{
33654412c6816cd42de22d222b5a03938e9e0797efb3dirk  MagickCore::Image
33664412c6816cd42de22d222b5a03938e9e0797efb3dirk    *newImage;
33674412c6816cd42de22d222b5a03938e9e0797efb3dirk
33684412c6816cd42de22d222b5a03938e9e0797efb3dirk  GetPPException;
33695fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
33704412c6816cd42de22d222b5a03938e9e0797efb3dirk  newImage=KuwaharaImage(constImage(),radius_,sigma_,exceptionInfo);
33714412c6816cd42de22d222b5a03938e9e0797efb3dirk  replaceImage(newImage);
33724412c6816cd42de22d222b5a03938e9e0797efb3dirk  RestorePPChannelMask;
337377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
33744412c6816cd42de22d222b5a03938e9e0797efb3dirk}
33754412c6816cd42de22d222b5a03938e9e0797efb3dirk
33761940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::level(const double blackPoint_,const double whitePoint_,
33771940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double gamma_)
33783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
33793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
33801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3381e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) LevelImage(image(),blackPoint_,whitePoint_,gamma_,exceptionInfo);
338277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
33833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
33843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
33851940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::levelChannel(const ChannelType channel_,
33861940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double blackPoint_,const double whitePoint_,const double gamma_)
33873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
33883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
33891940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
33905fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
3391e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  (void) LevelImage(image(),blackPoint_,whitePoint_,gamma_,exceptionInfo);
33921940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
339377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
33943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
33951940fe06f035ea32a4ec4df61f6897396877aa3cdirk
33961940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::levelColors(const Color &blackColor_,
33971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Color &whiteColor_,const bool invert_)
33983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
33991940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
34001940fe06f035ea32a4ec4df61f6897396877aa3cdirk    black,
34011940fe06f035ea32a4ec4df61f6897396877aa3cdirk    white;
34023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
34031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
34041940fe06f035ea32a4ec4df61f6897396877aa3cdirk
340566a0c5b9e3f8a7fde0bec2869b6d0b87977bca41dirk  black=static_cast<PixelInfo>(blackColor_);
340666a0c5b9e3f8a7fde0bec2869b6d0b87977bca41dirk  white=static_cast<PixelInfo>(whiteColor_);
34071940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
34081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) LevelImageColors(image(),&black,&white,invert_ == true ?
3409e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    MagickTrue : MagickFalse,exceptionInfo);
341077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
34113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
34123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
34131940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::levelColorsChannel(const ChannelType channel_,
34141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Color &blackColor_,const Color &whiteColor_,const bool invert_)
34153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
34161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
34171940fe06f035ea32a4ec4df61f6897396877aa3cdirk    black,
34181940fe06f035ea32a4ec4df61f6897396877aa3cdirk    white;
34191940fe06f035ea32a4ec4df61f6897396877aa3cdirk
34203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
34211940fe06f035ea32a4ec4df61f6897396877aa3cdirk
342266a0c5b9e3f8a7fde0bec2869b6d0b87977bca41dirk  black=static_cast<PixelInfo>(blackColor_);
342366a0c5b9e3f8a7fde0bec2869b6d0b87977bca41dirk  white=static_cast<PixelInfo>(whiteColor_);
34241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
34255fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
34261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) LevelImageColors(image(),&black,&white,invert_ == true ?
3427e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    MagickTrue : MagickFalse,exceptionInfo);
34281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
342977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
34303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
34311940fe06f035ea32a4ec4df61f6897396877aa3cdirk
34327907f552405706a71b28bdbd6bf34e7100d6de31dirkvoid Magick::Image::levelize(const double blackPoint_,const double whitePoint_,
34337907f552405706a71b28bdbd6bf34e7100d6de31dirk  const double gamma_)
34347907f552405706a71b28bdbd6bf34e7100d6de31dirk{
34357907f552405706a71b28bdbd6bf34e7100d6de31dirk  modifyImage();
34367907f552405706a71b28bdbd6bf34e7100d6de31dirk  GetPPException;
34377907f552405706a71b28bdbd6bf34e7100d6de31dirk  (void) LevelizeImage(image(),blackPoint_,whitePoint_,gamma_,exceptionInfo);
34387907f552405706a71b28bdbd6bf34e7100d6de31dirk  ThrowImageException;
34397907f552405706a71b28bdbd6bf34e7100d6de31dirk}
34407907f552405706a71b28bdbd6bf34e7100d6de31dirk
34417907f552405706a71b28bdbd6bf34e7100d6de31dirkvoid Magick::Image::levelizeChannel(const ChannelType channel_,
34427907f552405706a71b28bdbd6bf34e7100d6de31dirk  const double blackPoint_,const double whitePoint_,const double gamma_)
34437907f552405706a71b28bdbd6bf34e7100d6de31dirk{
34447907f552405706a71b28bdbd6bf34e7100d6de31dirk  modifyImage();
34457907f552405706a71b28bdbd6bf34e7100d6de31dirk  GetPPException;
34467907f552405706a71b28bdbd6bf34e7100d6de31dirk  GetAndSetPPChannelMask(channel_);
34477907f552405706a71b28bdbd6bf34e7100d6de31dirk  (void) LevelizeImage(image(),blackPoint_,whitePoint_,gamma_,exceptionInfo);
34487907f552405706a71b28bdbd6bf34e7100d6de31dirk  RestorePPChannelMask;
34497907f552405706a71b28bdbd6bf34e7100d6de31dirk  ThrowImageException;
34507907f552405706a71b28bdbd6bf34e7100d6de31dirk}
34517907f552405706a71b28bdbd6bf34e7100d6de31dirk
34521940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::linearStretch(const double blackPoint_,
34531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double whitePoint_)
34543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
34551940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
34561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3457e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  LinearStretchImage(image(),blackPoint_,whitePoint_,exceptionInfo);
345877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
34593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
34603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
34611940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::liquidRescale(const Geometry &geometry_)
34623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
34631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
34641940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
34651940fe06f035ea32a4ec4df61f6897396877aa3cdirk
34661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
34671940fe06f035ea32a4ec4df61f6897396877aa3cdirk    height=rows(),
34681940fe06f035ea32a4ec4df61f6897396877aa3cdirk    width=columns();
34691940fe06f035ea32a4ec4df61f6897396877aa3cdirk
34701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ssize_t
34711940fe06f035ea32a4ec4df61f6897396877aa3cdirk    x=0,
34721940fe06f035ea32a4ec4df61f6897396877aa3cdirk    y=0;
34731940fe06f035ea32a4ec4df61f6897396877aa3cdirk
34741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ParseMetaGeometry(static_cast<std::string>(geometry_).c_str(),&x,&y,&width,
34751940fe06f035ea32a4ec4df61f6897396877aa3cdirk    &height);
34761940fe06f035ea32a4ec4df61f6897396877aa3cdirk
34771940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3478e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=LiquidRescaleImage(image(),width,height,x,y,exceptionInfo);
34791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
348077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
34813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
34821940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3483be80460638d2432ed6f7bdc93be1b342e30f6e9cdirkvoid Magick::Image::localContrast(const double radius_,const double strength_)
3484be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk{
3485be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk  MagickCore::Image
3486be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk    *newImage;
3487be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk
3488be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk  GetPPException;
3489be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk  newImage=LocalContrastImage(constImage(),radius_,strength_,exceptionInfo);
3490be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk  replaceImage(newImage);
3491be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk  ThrowImageException;
3492be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk}
3493be80460638d2432ed6f7bdc93be1b342e30f6e9cdirk
34941940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::magnify(void)
34953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
34961940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
34971940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
34981940fe06f035ea32a4ec4df61f6897396877aa3cdirk
34991940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3500e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=MagnifyImage(constImage(),exceptionInfo);
35011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
350277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
35033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
35043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
35051940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::map(const Image &mapImage_,const bool dither_)
35063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
35073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
35081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
35091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->quantizeDither(dither_);
35101940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RemapImage(options()->quantizeInfo(),image(),mapImage_.constImage(),
3511e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
351277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
35133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
35141940fe06f035ea32a4ec4df61f6897396877aa3cdirk
35151940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::medianFilter(const double radius_)
35163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
35171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
35181940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
35191940fe06f035ea32a4ec4df61f6897396877aa3cdirk
35201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
35211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=StatisticImage(image(),MedianStatistic,(size_t) radius_,
3522e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    (size_t) radius_,exceptionInfo);
35231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
352477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
35253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
35263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
35271940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::minify(void)
35283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
35291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
35301940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
35311940fe06f035ea32a4ec4df61f6897396877aa3cdirk
35321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3533e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=MinifyImage(constImage(),exceptionInfo);
35341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
353577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
35363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
35373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
35381940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::modulate(const double brightness_,const double saturation_,
35391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double hue_)
35403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
35411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  char
3542151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy    modulate[MagickPathExtent + 1];
35433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3544151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy  FormatLocaleString(modulate,MagickPathExtent,"%3.6f,%3.6f,%3.6f",brightness_,
35451940fe06f035ea32a4ec4df61f6897396877aa3cdirk    saturation_,hue_);
35463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
35471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
35481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3549e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  ModulateImage(image(),modulate,exceptionInfo);
355077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
35513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
35523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3553100c62ceee252ed475fca6a57b3dbaa3d27d2ed9dirkMagick::ImageMoments Magick::Image::moments(void) const
3554617c1234f713a6b7068e2a5abbf94a23f77c8181dirk{
355577328896b876314656427663695bc7b2c9be3f74dirk  return(ImageMoments(*this));
3556617c1234f713a6b7068e2a5abbf94a23f77c8181dirk}
3557617c1234f713a6b7068e2a5abbf94a23f77c8181dirk
35583648685f9a848931845044f9da77dccc4cc4f480dirkvoid Magick::Image::morphology(const MorphologyMethod method_,
35593648685f9a848931845044f9da77dccc4cc4f480dirk  const std::string kernel_,const ssize_t iterations_)
35603648685f9a848931845044f9da77dccc4cc4f480dirk{
35613648685f9a848931845044f9da77dccc4cc4f480dirk  KernelInfo
35623648685f9a848931845044f9da77dccc4cc4f480dirk    *kernel;
35633648685f9a848931845044f9da77dccc4cc4f480dirk
35643648685f9a848931845044f9da77dccc4cc4f480dirk  MagickCore::Image
35653648685f9a848931845044f9da77dccc4cc4f480dirk    *newImage;
35663648685f9a848931845044f9da77dccc4cc4f480dirk
35673648685f9a848931845044f9da77dccc4cc4f480dirk  GetPPException;
35682c57b74e160f9b605d74dec24081309f28b83899cristy  kernel=AcquireKernelInfo(kernel_.c_str(),exceptionInfo);
35692c57b74e160f9b605d74dec24081309f28b83899cristy  if (kernel == (KernelInfo *) NULL)
357077328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,"Unable to parse kernel.");
35713648685f9a848931845044f9da77dccc4cc4f480dirk  newImage=MorphologyImage(constImage(),method_,iterations_,kernel,
3572e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
35733648685f9a848931845044f9da77dccc4cc4f480dirk  replaceImage(newImage);
35743648685f9a848931845044f9da77dccc4cc4f480dirk  kernel=DestroyKernelInfo(kernel);
357577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
35763648685f9a848931845044f9da77dccc4cc4f480dirk}
35773648685f9a848931845044f9da77dccc4cc4f480dirk
35783648685f9a848931845044f9da77dccc4cc4f480dirkvoid Magick::Image::morphology(const MorphologyMethod method_,
35793648685f9a848931845044f9da77dccc4cc4f480dirk  const KernelInfoType kernel_,const std::string arguments_,
35803648685f9a848931845044f9da77dccc4cc4f480dirk  const ssize_t iterations_)
35813648685f9a848931845044f9da77dccc4cc4f480dirk{
35823648685f9a848931845044f9da77dccc4cc4f480dirk  const char
35833648685f9a848931845044f9da77dccc4cc4f480dirk    *option;
35843648685f9a848931845044f9da77dccc4cc4f480dirk
35853648685f9a848931845044f9da77dccc4cc4f480dirk  std::string
35863648685f9a848931845044f9da77dccc4cc4f480dirk    kernel;
35873648685f9a848931845044f9da77dccc4cc4f480dirk
35883648685f9a848931845044f9da77dccc4cc4f480dirk  option=CommandOptionToMnemonic(MagickKernelOptions,kernel_);
35893648685f9a848931845044f9da77dccc4cc4f480dirk  if (option == (const char *)NULL)
35901deff92b197cfc3a4354e651548e83865ac728b1cristy    {
35911deff92b197cfc3a4354e651548e83865ac728b1cristy      throwExceptionExplicit(MagickCore::OptionError,
35921deff92b197cfc3a4354e651548e83865ac728b1cristy        "Unable to determine kernel type.");
35931deff92b197cfc3a4354e651548e83865ac728b1cristy      return;
35941deff92b197cfc3a4354e651548e83865ac728b1cristy    }
35953648685f9a848931845044f9da77dccc4cc4f480dirk  kernel=std::string(option);
35963648685f9a848931845044f9da77dccc4cc4f480dirk  if (!arguments_.empty())
35973648685f9a848931845044f9da77dccc4cc4f480dirk    kernel+=":"+arguments_;
35983648685f9a848931845044f9da77dccc4cc4f480dirk
35993648685f9a848931845044f9da77dccc4cc4f480dirk  morphology(method_,kernel,iterations_);
36003648685f9a848931845044f9da77dccc4cc4f480dirk}
36013648685f9a848931845044f9da77dccc4cc4f480dirk
36023648685f9a848931845044f9da77dccc4cc4f480dirkvoid Magick::Image::morphologyChannel(const ChannelType channel_,
36033648685f9a848931845044f9da77dccc4cc4f480dirk  const MorphologyMethod method_,const std::string kernel_,
36043648685f9a848931845044f9da77dccc4cc4f480dirk  const ssize_t iterations_)
36053648685f9a848931845044f9da77dccc4cc4f480dirk{
36063648685f9a848931845044f9da77dccc4cc4f480dirk  KernelInfo
36073648685f9a848931845044f9da77dccc4cc4f480dirk    *kernel;
36083648685f9a848931845044f9da77dccc4cc4f480dirk
36093648685f9a848931845044f9da77dccc4cc4f480dirk  MagickCore::Image
36103648685f9a848931845044f9da77dccc4cc4f480dirk    *newImage;
36113648685f9a848931845044f9da77dccc4cc4f480dirk
36123648685f9a848931845044f9da77dccc4cc4f480dirk
36133648685f9a848931845044f9da77dccc4cc4f480dirk  GetPPException;
36142c57b74e160f9b605d74dec24081309f28b83899cristy  kernel=AcquireKernelInfo(kernel_.c_str(),exceptionInfo);
36152c57b74e160f9b605d74dec24081309f28b83899cristy  if (kernel == (KernelInfo *)NULL)
36162688844bcbba1873074e5a933e43fbfd0290b135dirk    {
36172688844bcbba1873074e5a933e43fbfd0290b135dirk      throwExceptionExplicit(MagickCore::OptionError,
36182688844bcbba1873074e5a933e43fbfd0290b135dirk        "Unable to parse kernel.");
36192688844bcbba1873074e5a933e43fbfd0290b135dirk      return;
36202688844bcbba1873074e5a933e43fbfd0290b135dirk    }
36215fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
36223648685f9a848931845044f9da77dccc4cc4f480dirk  newImage=MorphologyImage(constImage(),method_,iterations_,kernel,
3623e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
36243648685f9a848931845044f9da77dccc4cc4f480dirk  RestorePPChannelMask;
36253648685f9a848931845044f9da77dccc4cc4f480dirk  replaceImage(newImage);
36263648685f9a848931845044f9da77dccc4cc4f480dirk  kernel=DestroyKernelInfo(kernel);
362777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
36283648685f9a848931845044f9da77dccc4cc4f480dirk}
36293648685f9a848931845044f9da77dccc4cc4f480dirk
36303648685f9a848931845044f9da77dccc4cc4f480dirkvoid Magick::Image::morphologyChannel(const ChannelType channel_,
36313648685f9a848931845044f9da77dccc4cc4f480dirk  const MorphologyMethod method_,const KernelInfoType kernel_,
36323648685f9a848931845044f9da77dccc4cc4f480dirk  const std::string arguments_,const ssize_t iterations_)
36333648685f9a848931845044f9da77dccc4cc4f480dirk{
36343648685f9a848931845044f9da77dccc4cc4f480dirk  const char
36353648685f9a848931845044f9da77dccc4cc4f480dirk    *option;
36363648685f9a848931845044f9da77dccc4cc4f480dirk
36373648685f9a848931845044f9da77dccc4cc4f480dirk  std::string
36383648685f9a848931845044f9da77dccc4cc4f480dirk    kernel;
36393648685f9a848931845044f9da77dccc4cc4f480dirk
36403648685f9a848931845044f9da77dccc4cc4f480dirk  option=CommandOptionToMnemonic(MagickKernelOptions,kernel_);
36413648685f9a848931845044f9da77dccc4cc4f480dirk  if (option == (const char *)NULL)
3642b8ef6e8671cbbe0f38b80f8307d96031bc59246cdirk    {
3643b8ef6e8671cbbe0f38b80f8307d96031bc59246cdirk      throwExceptionExplicit(MagickCore::OptionError,
3644b8ef6e8671cbbe0f38b80f8307d96031bc59246cdirk        "Unable to determine kernel type.");
3645b8ef6e8671cbbe0f38b80f8307d96031bc59246cdirk      return;
3646b8ef6e8671cbbe0f38b80f8307d96031bc59246cdirk    }
36473648685f9a848931845044f9da77dccc4cc4f480dirk
36483648685f9a848931845044f9da77dccc4cc4f480dirk  kernel=std::string(option);
36493648685f9a848931845044f9da77dccc4cc4f480dirk  if (!arguments_.empty())
36503648685f9a848931845044f9da77dccc4cc4f480dirk    kernel+=":"+arguments_;
36513648685f9a848931845044f9da77dccc4cc4f480dirk
36523648685f9a848931845044f9da77dccc4cc4f480dirk  morphologyChannel(channel_,method_,kernel,iterations_);
36533648685f9a848931845044f9da77dccc4cc4f480dirk}
36543648685f9a848931845044f9da77dccc4cc4f480dirk
36551940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::motionBlur(const double radius_,const double sigma_,
36561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double angle_)
36573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
36581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
36591940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
36601940fe06f035ea32a4ec4df61f6897396877aa3cdirk
36611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3662e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=MotionBlurImage(constImage(),radius_,sigma_,angle_,exceptionInfo);
36631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
366477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
36653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
36663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
36671940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::negate(const bool grayscale_)
36683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
36691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
36701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3671e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  NegateImage(image(),(MagickBooleanType) grayscale_,exceptionInfo);
367277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
36731940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
36743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
36751940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::negateChannel(const ChannelType channel_,
36761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const bool grayscale_)
36771940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
36781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
36791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
36805fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
3681e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  NegateImage(image(),(MagickBooleanType) grayscale_,exceptionInfo);
36821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
368377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
36843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
36853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
36861940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::normalize(void)
36873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
36883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
36891940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3690e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  NormalizeImage(image(),exceptionInfo);
369177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
36923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
36931940fe06f035ea32a4ec4df61f6897396877aa3cdirk
36941940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::oilPaint(const double radius_,const double sigma_)
36953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
36961940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
36971940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
36981940fe06f035ea32a4ec4df61f6897396877aa3cdirk
36991940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3700e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=OilPaintImage(constImage(),radius_,sigma_,exceptionInfo);
37011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
370277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
37033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
37043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3705a3af1222eb218de7eae918dcf92d2d3f8996271ddirkvoid Magick::Image::opaque(const Color &opaqueColor_,const Color &penColor_,
3706a3af1222eb218de7eae918dcf92d2d3f8996271ddirk  const bool invert_)
37073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
37081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  std::string
37091940fe06f035ea32a4ec4df61f6897396877aa3cdirk    opaqueColor,
37101940fe06f035ea32a4ec4df61f6897396877aa3cdirk    penColor;
37111940fe06f035ea32a4ec4df61f6897396877aa3cdirk
37121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
37131940fe06f035ea32a4ec4df61f6897396877aa3cdirk    opaque,
37141940fe06f035ea32a4ec4df61f6897396877aa3cdirk    pen;
37151940fe06f035ea32a4ec4df61f6897396877aa3cdirk
37161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!opaqueColor_.isValid())
371777328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
371877328896b876314656427663695bc7b2c9be3f74dirk      "Opaque color argument is invalid");
37191940fe06f035ea32a4ec4df61f6897396877aa3cdirk
37201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!penColor_.isValid())
372177328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
372277328896b876314656427663695bc7b2c9be3f74dirk      "Pen color argument is invalid");
37231940fe06f035ea32a4ec4df61f6897396877aa3cdirk
37241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
37251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  opaqueColor=opaqueColor_;
37261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  penColor=penColor_;
37271940fe06f035ea32a4ec4df61f6897396877aa3cdirk
37281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
37291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) QueryColorCompliance(opaqueColor.c_str(),AllCompliance,&opaque,
3730e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
37311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) QueryColorCompliance(penColor.c_str(),AllCompliance,&pen,
3732e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
3733a3af1222eb218de7eae918dcf92d2d3f8996271ddirk  OpaquePaintImage(image(),&opaque,&pen,invert_ ? MagickTrue : MagickFalse,
3734e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
373577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
37363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
37371940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3738f1775d8f60a3ce551a096140d7559d46ba33ac14dirkvoid Magick::Image::orderedDither(std::string thresholdMap_)
3739f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
3740f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  modifyImage();
3741f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
3742cd69a2d4e422d02a1ca70c45f59861752717871edirk  (void) OrderedDitherImage(image(),thresholdMap_.c_str(),exceptionInfo);
374377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
3744f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
3745f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
3746f1775d8f60a3ce551a096140d7559d46ba33ac14dirkvoid Magick::Image::orderedDitherChannel(const ChannelType channel_,
3747f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  std::string thresholdMap_)
3748f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
3749f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  modifyImage();
3750f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
37515fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
3752cd69a2d4e422d02a1ca70c45f59861752717871edirk  (void)OrderedDitherImage(image(),thresholdMap_.c_str(),exceptionInfo);
3753f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  RestorePPChannelMask;
375477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
3755f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
3756f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
37571940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::perceptible(const double epsilon_)
37583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
37591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
37601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3761e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  PerceptibleImage(image(),epsilon_,exceptionInfo);
376277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
37633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
37643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
37651940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::perceptibleChannel(const ChannelType channel_,
37661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double epsilon_)
37673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
37683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
37691940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
37705fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
3771e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  PerceptibleImage(image(),epsilon_,exceptionInfo);
37721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
377377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
37743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
37751940fe06f035ea32a4ec4df61f6897396877aa3cdirk
3776100c62ceee252ed475fca6a57b3dbaa3d27d2ed9dirk Magick::ImagePerceptualHash Magick::Image::perceptualHash() const
3777e316d154e7b050fab78dbf86b33f0797594939cadirk{
377877328896b876314656427663695bc7b2c9be3f74dirk  return(ImagePerceptualHash(*this));
3779e316d154e7b050fab78dbf86b33f0797594939cadirk}
3780e316d154e7b050fab78dbf86b33f0797594939cadirk
37811940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::ping(const std::string &imageSpec_)
37823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
37831940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
37841940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
37851940fe06f035ea32a4ec4df61f6897396877aa3cdirk
37861940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
37871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->fileName(imageSpec_);
3788e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=PingImage(imageInfo(),exceptionInfo);
37895678eda356af71bb94f5ce79e1edfcda134133f5dirk  read(newImage,exceptionInfo);
37903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
37913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
37921940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::ping(const Blob& blob_)
37933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
37941940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
37951940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
37961940fe06f035ea32a4ec4df61f6897396877aa3cdirk
37971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3798e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=PingBlob(imageInfo(),blob_.data(),blob_.length(),exceptionInfo);
37995678eda356af71bb94f5ce79e1edfcda134133f5dirk  read(newImage,exceptionInfo);
38003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
38011940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38021940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::pixelColor(const ssize_t x_,const ssize_t y_,
38031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Color &color_)
38043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
38051940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
38061940fe06f035ea32a4ec4df61f6897396877aa3cdirk    packet;
38071940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  Quantum
38091940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *pixel;
38101940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Test arguments to ensure they are within the image.
38121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (y_ > (ssize_t) rows() || x_ > (ssize_t) columns())
381377328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
381477328896b876314656427663695bc7b2c9be3f74dirk      "Access outside of image boundary");
38151940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38161940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
38171940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Set image to DirectClass
38191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  classType(DirectClass );
38201940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Get pixel view
38221940fe06f035ea32a4ec4df61f6897396877aa3cdirk  Pixels pixels(*this);
38231940fe06f035ea32a4ec4df61f6897396877aa3cdirk    // Set pixel value
38241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  pixel=pixels.get(x_, y_, 1, 1 );
38251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  packet=color_;
382611a06d3f2cac0f17af7963e83bc6e9ebd2a377c0cristy  MagickCore::SetPixelViaPixelInfo(constImage(),&packet,pixel);
38271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Tell ImageMagick that pixels have been updated
38281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  pixels.sync();
38293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
38303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
38311940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Color Magick::Image::pixelColor(const ssize_t x_,
38321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const ssize_t y_) const
38333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
38341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Quantum
38351940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *pixel;
38361940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  pixel=getConstPixels(x_,y_,1,1);
38381940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (pixel)
38393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
38401940fe06f035ea32a4ec4df61f6897396877aa3cdirk      PixelInfo
38411940fe06f035ea32a4ec4df61f6897396877aa3cdirk        packet;
38421940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38431940fe06f035ea32a4ec4df61f6897396877aa3cdirk      MagickCore::GetPixelInfoPixel(constImage(),pixel,&packet);
38441940fe06f035ea32a4ec4df61f6897396877aa3cdirk      return(Color(packet));
38453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
38461940fe06f035ea32a4ec4df61f6897396877aa3cdirk
38471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Color()); // invalid
38483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
38493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
38501940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::polaroid(const std::string &caption_,const double angle_,
38511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const PixelInterpolateMethod method_)
38523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
38531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
38541940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
38553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
38561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
38571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=PolaroidImage(constImage(),options()->drawInfo(),caption_.c_str(),
3858e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    angle_,method_,exceptionInfo);
38591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
386077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
38613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
38623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
38631940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::posterize(const size_t levels_,const DitherMethod method_)
38643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
38653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
38661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3867e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  PosterizeImage(image(),levels_,method_,exceptionInfo);
386877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
38693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
38703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
38711940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::posterizeChannel(const ChannelType channel_,
38721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t levels_,const DitherMethod method_)
38731940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
38741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
38751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
38765fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
3877e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  PosterizeImage(image(),levels_,method_,exceptionInfo);
38781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
387977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
38803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
38813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
38821940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::process(std::string name_,const ssize_t argc,
38831940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const char **argv)
38843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
38853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
38863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
38871940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
38881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) InvokeDynamicImageFilter(name_.c_str(),&image(),argc,argv,
3889e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk      exceptionInfo);
389077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
38913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
38923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
38931940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::profile(const std::string name_,
38941940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Magick::Blob &profile_)
38951940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
38961940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
38971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
38981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) ProfileImage(image(),name_.c_str(),(unsigned char *)profile_.data(),
3899e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    profile_.length(),exceptionInfo);
390077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
39013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39031940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Blob Magick::Image::profile(const std::string name_) const
39043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39051940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const StringInfo
39061940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *profile;
39073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  profile=GetImageProfile(constImage(),name_.c_str());
39093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39101940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (profile == (StringInfo *) NULL)
39111940fe06f035ea32a4ec4df61f6897396877aa3cdirk    return(Blob());
39121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(Blob((void*) GetStringInfoDatum(profile),GetStringInfoLength(
39131940fe06f035ea32a4ec4df61f6897396877aa3cdirk    profile)));
39143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39161940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::quantize(const bool measureError_)
39173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
39191940fe06f035ea32a4ec4df61f6897396877aa3cdirk
39201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (measureError_)
39211940fe06f035ea32a4ec4df61f6897396877aa3cdirk    options()->quantizeInfo()->measure_error=MagickTrue;
39223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  else
39231940fe06f035ea32a4ec4df61f6897396877aa3cdirk    options()->quantizeInfo()->measure_error=MagickFalse;
39241940fe06f035ea32a4ec4df61f6897396877aa3cdirk
39251940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
3926e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  QuantizeImage(options()->quantizeInfo(),image(),exceptionInfo);
392777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
39283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39291940fe06f035ea32a4ec4df61f6897396877aa3cdirk
39301940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::raise(const Geometry &geometry_,const bool raisedFlag_)
39313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
39331940fe06f035ea32a4ec4df61f6897396877aa3cdirk    raiseInfo=geometry_;
39341940fe06f035ea32a4ec4df61f6897396877aa3cdirk
39351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
39363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
39371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RaiseImage(image(),&raiseInfo,raisedFlag_ == true ? MagickTrue : MagickFalse,
3938e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
393977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
39403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39411940fe06f035ea32a4ec4df61f6897396877aa3cdirk
39428352b50e85321562d27f6a90aa7d461afa0c1df0dirkvoid Magick::Image::randomThreshold(const double low_,const double high_)
39433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
39458352b50e85321562d27f6a90aa7d461afa0c1df0dirk  (void) RandomThresholdImage(image(),low_,high_,exceptionInfo);
394677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
39473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39491940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::randomThresholdChannel(const ChannelType channel_,
39508352b50e85321562d27f6a90aa7d461afa0c1df0dirk  const double low_,const double high_)
39513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
39531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
39545fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
39558352b50e85321562d27f6a90aa7d461afa0c1df0dirk  (void) RandomThresholdImage(image(),low_,high_,exceptionInfo);
39561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
395777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
39583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39601940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::read(const Blob &blob_)
39613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
39631940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
39643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39651940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
39661940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=BlobToImage(imageInfo(),static_cast<const void *>(blob_.data()),
3967e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    blob_.length(),exceptionInfo);
3968671b5d721987b2a12d84b656de888be1c99aa881dirk  read(newImage,exceptionInfo);
39693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39711940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::read(const Blob &blob_,const Geometry &size_)
39723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size(size_);
39741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  read(blob_);
39753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39771940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::read(const Blob &blob_,const Geometry &size_,
39781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t depth_)
39793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size(size_);
39811940fe06f035ea32a4ec4df61f6897396877aa3cdirk  depth(depth_);
39821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  read(blob_);
39833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
39851940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::read(const Blob &blob_,const Geometry &size_,
39861940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t depth_,const std::string &magick_)
39873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size(size_);
39891940fe06f035ea32a4ec4df61f6897396877aa3cdirk  depth(depth_);
39901940fe06f035ea32a4ec4df61f6897396877aa3cdirk  magick(magick_);
39911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Set explicit image format
39921940fe06f035ea32a4ec4df61f6897396877aa3cdirk  fileName(magick_ + ':');
39931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  read(blob_);
39943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
39951940fe06f035ea32a4ec4df61f6897396877aa3cdirk
39961940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::read(const Blob &blob_,const Geometry &size_,
39971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &magick_)
39983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
39991940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size(size_);
40001940fe06f035ea32a4ec4df61f6897396877aa3cdirk  magick(magick_);
40011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Set explicit image format
40021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  fileName(magick_ + ':');
40031940fe06f035ea32a4ec4df61f6897396877aa3cdirk  read(blob_);
40043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
40053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
40061940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::read(const Geometry &size_,const std::string &imageSpec_)
40073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
40081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size(size_);
40091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  read(imageSpec_);
40101940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
40113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
40121940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::read(const size_t width_,const size_t height_,
40131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &map_,const StorageType type_,const void *pixels_)
40141940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
40151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
40161940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
40173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
40181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
40191940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=ConstituteImage(width_,height_,map_.c_str(),type_, pixels_,
4020e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
40211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
402277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
40233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
40243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
40251940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::read(const std::string &imageSpec_)
40263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
40271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
40281940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
40291940fe06f035ea32a4ec4df61f6897396877aa3cdirk
40301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
40311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->fileName(imageSpec_);
4032e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ReadImage(imageInfo(),exceptionInfo);
4033671b5d721987b2a12d84b656de888be1c99aa881dirk  read(newImage,exceptionInfo);
40343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
40353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4036af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirkvoid Magick::Image::readMask(const Magick::Image &mask_)
4037af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk{
4038af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  mask(mask_,ReadPixelMask);
4039af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk}
4040af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
4041af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirkMagick::Image Magick::Image::readMask(void) const
4042af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk{
4043af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  return(mask(ReadPixelMask));
4044af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk}
4045af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
40461940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::readPixels(const Magick::QuantumType quantum_,
40471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const unsigned char *source_)
40483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
40491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  QuantumInfo
40501940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *quantum_info;
40511940fe06f035ea32a4ec4df61f6897396877aa3cdirk
40525f766ef8b0cd9906c2c3a56d845828380a251073cristy  quantum_info=AcquireQuantumInfo(imageInfo(),image());
40531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
40541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ImportQuantumPixels(image(),(MagickCore::CacheView *) NULL,quantum_info,
4055e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    quantum_,source_,exceptionInfo);
40561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  quantum_info=DestroyQuantumInfo(quantum_info);
405777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
40583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
40591940fe06f035ea32a4ec4df61f6897396877aa3cdirk
40601940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::reduceNoise(void)
40613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
406297bcd8db015ea3519828dd0b2f738517825b73c3dirk  reduceNoise(3);
40633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
40643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
406597bcd8db015ea3519828dd0b2f738517825b73c3dirkvoid Magick::Image::reduceNoise(const size_t order_)
40663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
40671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
40681940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
40693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
40701940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
407197bcd8db015ea3519828dd0b2f738517825b73c3dirk  newImage=StatisticImage(constImage(),NonpeakStatistic,order_,
407297bcd8db015ea3519828dd0b2f738517825b73c3dirk    order_,exceptionInfo);
40731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
407477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
40753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
40763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4077cd27554467f87f94cd4b4880530239264e379467dirkvoid Magick::Image::repage()
4078cd27554467f87f94cd4b4880530239264e379467dirk{
4079cd27554467f87f94cd4b4880530239264e379467dirk  modifyImage();
4080cd27554467f87f94cd4b4880530239264e379467dirk  options()->page(Geometry());
4081cd27554467f87f94cd4b4880530239264e379467dirk  image()->page.width = 0;
4082cd27554467f87f94cd4b4880530239264e379467dirk  image()->page.height = 0;
4083cd27554467f87f94cd4b4880530239264e379467dirk  image()->page.x = 0;
4084cd27554467f87f94cd4b4880530239264e379467dirk  image()->page.y = 0;
4085cd27554467f87f94cd4b4880530239264e379467dirk}
4086cd27554467f87f94cd4b4880530239264e379467dirk
4087c3723b409bfe442938f3a58a16d4723216d3e1d6dirkvoid Magick::Image::resample(const Point &density_)
4088f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk{
4089f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk  MagickCore::Image
4090f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk    *newImage;
4091f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk
4092f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk  GetPPException;
4093c3723b409bfe442938f3a58a16d4723216d3e1d6dirk  newImage=ResampleImage(constImage(),density_.x(),density_.y(),
4094c3723b409bfe442938f3a58a16d4723216d3e1d6dirk    image()->filter,exceptionInfo);
4095f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk  replaceImage(newImage);
409677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4097f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk}
4098f8c6db577bf34604c1b62d0ac8ae0a3010750493dirk
4099f8c6db577bf34604c1b62d0ac8ae0a3010750493dirkvoid Magick::Image::resize(const Geometry &geometry_)
41003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
41011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
41021940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
41031940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41041940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
41051940fe06f035ea32a4ec4df61f6897396877aa3cdirk    height=rows(),
41061940fe06f035ea32a4ec4df61f6897396877aa3cdirk    width=columns();
41071940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ssize_t
41091940fe06f035ea32a4ec4df61f6897396877aa3cdirk    x=0,
41101940fe06f035ea32a4ec4df61f6897396877aa3cdirk    y=0;
41111940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41121940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // Calculate new size.  This code should be supported using binary arguments
41131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  // in the ImageMagick library.
41141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ParseMetaGeometry(static_cast<std::string>(geometry_).c_str(),&x,&y,&width,
41151940fe06f035ea32a4ec4df61f6897396877aa3cdirk    &height);
4116a615eae0816555030edf5e4dad48305e66669c6edirk
41171940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
41181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=ResizeImage(constImage(),width,height,image()->filter,
4119e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
41201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
412177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
41223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
41233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
41241940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::roll(const Geometry &roll_)
41253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
41261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
41271940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
41281940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
41306e6af8ed20baf26aaf110518af6bca24f804cf86dirk  newImage=RollImage(constImage(),roll_.xOff(),roll_.yOff(),exceptionInfo);
41311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
413277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
41333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
41341940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41351940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::roll(const size_t columns_,const size_t rows_)
41363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
41371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
41381940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
41391940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41401940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
41411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=RollImage(constImage(),static_cast<ssize_t>(columns_),
4142e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    static_cast<ssize_t>(rows_),exceptionInfo);
41431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
414477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
41453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
41463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
41471940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::rotate(const double degrees_)
41483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
41491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
41501940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
41511940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4153e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=RotateImage(constImage(),degrees_,exceptionInfo);
41541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
415577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
41563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
41571940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41586d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirkvoid Magick::Image::rotationalBlur(const double angle_)
41596d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk{
41606d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk  MagickCore::Image
41616d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk    *newImage;
41626d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk
41636d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk  GetPPException;
4164e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=RotationalBlurImage(constImage(),angle_,exceptionInfo);
41656d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk  replaceImage(newImage);
416677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
41676d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk}
41686d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk
41696d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirkvoid Magick::Image::rotationalBlurChannel(const ChannelType channel_,
41706d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk  const double angle_)
41716d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk{
41726d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk  MagickCore::Image
41736d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk    *newImage;
41746d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk
41756d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk  GetPPException;
41765fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
4177e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=RotationalBlurImage(constImage(),angle_,exceptionInfo);
41786d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk  RestorePPChannelMask;
41796d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk  replaceImage(newImage);
418077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
41816d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk}
41826d612cf866ac2d4bae9e21f95b035f8bf50c6f28dirk
41831940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::sample(const Geometry &geometry_)
41843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
41851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
41861940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
41871940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
41891940fe06f035ea32a4ec4df61f6897396877aa3cdirk    height=rows(),
41901940fe06f035ea32a4ec4df61f6897396877aa3cdirk    width=columns();
41911940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41921940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ssize_t
41931940fe06f035ea32a4ec4df61f6897396877aa3cdirk    x=0,
41941940fe06f035ea32a4ec4df61f6897396877aa3cdirk    y=0;
41951940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41961940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ParseMetaGeometry(static_cast<std::string>(geometry_).c_str(),&x,&y,&width,
41971940fe06f035ea32a4ec4df61f6897396877aa3cdirk    &height);
41981940fe06f035ea32a4ec4df61f6897396877aa3cdirk
41991940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4200e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=SampleImage(constImage(),width,height,exceptionInfo);
42011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
420277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
42033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
42043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
42051940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::scale(const Geometry &geometry_)
42063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
42071940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
42081940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
42091940fe06f035ea32a4ec4df61f6897396877aa3cdirk
42101940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
42111940fe06f035ea32a4ec4df61f6897396877aa3cdirk    height=rows(),
42121940fe06f035ea32a4ec4df61f6897396877aa3cdirk    width=columns();
42131940fe06f035ea32a4ec4df61f6897396877aa3cdirk
42141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ssize_t
42151940fe06f035ea32a4ec4df61f6897396877aa3cdirk    x=0,
42161940fe06f035ea32a4ec4df61f6897396877aa3cdirk    y=0;
42171940fe06f035ea32a4ec4df61f6897396877aa3cdirk
42181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ParseMetaGeometry(static_cast<std::string>(geometry_).c_str(),&x,&y,&width,
42191940fe06f035ea32a4ec4df61f6897396877aa3cdirk    &height);
42201940fe06f035ea32a4ec4df61f6897396877aa3cdirk
42211940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4222e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ScaleImage(constImage(),width,height,exceptionInfo);
42231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
422477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
42253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
42263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
42271940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::segment(const double clusterThreshold_,
42281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double smoothingThreshold_)
42293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
42303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
42311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
42321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  SegmentImage(image(),options()->quantizeColorSpace(),
42331940fe06f035ea32a4ec4df61f6897396877aa3cdirk    (MagickBooleanType) options()->verbose(),clusterThreshold_,
4234e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    smoothingThreshold_,exceptionInfo);
4235e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SyncImage(image(),exceptionInfo);
423677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
42373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
42383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4239f1775d8f60a3ce551a096140d7559d46ba33ac14dirkvoid Magick::Image::selectiveBlur(const double radius_,const double sigma_,
4240f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  const double threshold_)
4241f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4242f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  MagickCore::Image
4243f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *newImage;
4244f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4245f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
4246f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  newImage=SelectiveBlurImage(constImage(),radius_,sigma_,threshold_,
4247e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
4248f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  replaceImage(newImage);
424977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4250f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4251f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4252f1775d8f60a3ce551a096140d7559d46ba33ac14dirkvoid Magick::Image::selectiveBlurChannel(const ChannelType channel_,
4253f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  const double radius_,const double sigma_,const double threshold_)
4254f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4255f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  MagickCore::Image
4256f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *newImage;
4257f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4258f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
42595fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
4260f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  newImage=SelectiveBlurImage(constImage(),radius_,sigma_,threshold_,
4261e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
4262f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  RestorePPChannelMask;
4263f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  replaceImage(newImage);
426477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4265f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4266f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4267100c62ceee252ed475fca6a57b3dbaa3d27d2ed9dirkMagick::Image Magick::Image::separate(const ChannelType channel_) const
4268f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4269f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  MagickCore::Image
4270f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *image;
4271f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4272f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
4273e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  image=SeparateImage(constImage(),channel_,exceptionInfo);
427477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4275f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  if (image == (MagickCore::Image *) NULL)
4276f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    return(Magick::Image());
4277f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  else
4278f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    return(Magick::Image(image));
4279f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4280f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4281f1775d8f60a3ce551a096140d7559d46ba33ac14dirkvoid Magick::Image::sepiaTone(const double threshold_)
4282f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4283f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  MagickCore::Image
4284f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *newImage;
4285f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4286f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
4287e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=SepiaToneImage(constImage(),threshold_,exceptionInfo);
4288f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  replaceImage(newImage);
428977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4290f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4291f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4292181b2a74351daea0388a98b8e37e13efc53d42c9dirkbool Magick::Image::setColorMetric(const Image &reference_)
4293181b2a74351daea0388a98b8e37e13efc53d42c9dirk{
4294181b2a74351daea0388a98b8e37e13efc53d42c9dirk  bool
4295181b2a74351daea0388a98b8e37e13efc53d42c9dirk    status;
4296181b2a74351daea0388a98b8e37e13efc53d42c9dirk
4297181b2a74351daea0388a98b8e37e13efc53d42c9dirk  Image
4298181b2a74351daea0388a98b8e37e13efc53d42c9dirk    ref=reference_;
4299181b2a74351daea0388a98b8e37e13efc53d42c9dirk
4300181b2a74351daea0388a98b8e37e13efc53d42c9dirk  GetPPException;
4301181b2a74351daea0388a98b8e37e13efc53d42c9dirk  modifyImage();
4302181b2a74351daea0388a98b8e37e13efc53d42c9dirk  status=static_cast<bool>(SetImageColorMetric(image(),ref.constImage(),
4303181b2a74351daea0388a98b8e37e13efc53d42c9dirk    exceptionInfo));
4304181b2a74351daea0388a98b8e37e13efc53d42c9dirk  ThrowImageException;
4305181b2a74351daea0388a98b8e37e13efc53d42c9dirk  return(status);
4306181b2a74351daea0388a98b8e37e13efc53d42c9dirk}
4307181b2a74351daea0388a98b8e37e13efc53d42c9dirk
4308f1775d8f60a3ce551a096140d7559d46ba33ac14dirkMagick::Quantum *Magick::Image::setPixels(const ssize_t x_,const ssize_t y_,
4309f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  const size_t columns_,const size_t rows_)
4310f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4311f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  Quantum
4312f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *result;
4313f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4314f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  modifyImage();
4315f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
43161d4a6951ace4a184f51cfd8c25b1586c6453be96cristy  result=QueueAuthenticPixels(image(),x_,y_,columns_,rows_,exceptionInfo);
431777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4318f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  return(result);
4319f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4320f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
43211940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::shade(const double azimuth_,const double elevation_,
43221940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const bool colorShading_)
43233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
43241940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
43251940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
43261940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
43281940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=ShadeImage(constImage(),colorShading_ == true ?
4329e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    MagickTrue : MagickFalse,azimuth_,elevation_,exceptionInfo);
43301940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
433177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
43323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
43331940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43341940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::shadow(const double percent_opacity_,const double sigma_,
43351940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const ssize_t x_,const ssize_t y_)
43363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
43371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
43381940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
43391940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43401940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
43411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=ShadowImage(constImage(),percent_opacity_, sigma_,x_, y_,
4342e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
43431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
434477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
43453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
43463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
43471940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::sharpen(const double radius_,const double sigma_)
43483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
43491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
43501940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
43511940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4353e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=SharpenImage(constImage(),radius_,sigma_,exceptionInfo);
43541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
435577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
43563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
43571940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43581940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::sharpenChannel(const ChannelType channel_,
43591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double radius_,const double sigma_)
43603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
43611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
43621940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
43631940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
43655fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
4366e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=SharpenImage(constImage(),radius_,sigma_,exceptionInfo);
43671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
43681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
436977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
43703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
43713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
43721940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::shave(const Geometry &geometry_)
43733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
43741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
43751940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
43761940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43771940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
43781940fe06f035ea32a4ec4df61f6897396877aa3cdirk    shaveInfo=geometry_;
43791940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4381e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ShaveImage(constImage(),&shaveInfo,exceptionInfo);
43821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
438377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
43843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
43851940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43861940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::shear(const double xShearAngle_,const double yShearAngle_)
43873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
43881940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
43891940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
43901940fe06f035ea32a4ec4df61f6897396877aa3cdirk
43911940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4392e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ShearImage(constImage(),xShearAngle_,yShearAngle_,exceptionInfo);
43931940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
439477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
43953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
43963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4397f5801049887b9f9666f8c6a1fbca9a140a99407ddirkvoid Magick::Image::sigmoidalContrast(const bool sharpen_,
43981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double contrast,const double midpoint)
43993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
44003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
44011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
44021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) SigmoidalContrastImage(image(),(MagickBooleanType) sharpen_,contrast,
4403e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    midpoint,exceptionInfo);
440477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
44053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
44063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
44071940fe06f035ea32a4ec4df61f6897396877aa3cdirkstd::string Magick::Image::signature(const bool force_) const
44083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4409608580245cf9db16bc0275662329e23c3ce6da9bdirk  return(_imgRef->signature(force_));
44103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
44113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4412f1775d8f60a3ce551a096140d7559d46ba33ac14dirkvoid Magick::Image::sketch(const double radius_,const double sigma_,
4413f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  const double angle_)
4414f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4415f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  MagickCore::Image
4416f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *newImage;
4417f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4418f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
4419e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=SketchImage(constImage(),radius_,sigma_,angle_,exceptionInfo);
4420f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  replaceImage(newImage);
442177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4422f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4423f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
44241940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::solarize(const double factor_)
44253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
44263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
44271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4428e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  SolarizeImage(image(),factor_,exceptionInfo);
442977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
44301940fe06f035ea32a4ec4df61f6897396877aa3cdirk}
44311940fe06f035ea32a4ec4df61f6897396877aa3cdirk
44321940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::sparseColor(const ChannelType channel_,
44331940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const SparseColorMethod method_,const size_t numberArguments_,
44341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double *arguments_)
44351940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
44361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
44371940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
44381940fe06f035ea32a4ec4df61f6897396877aa3cdirk
44391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
44405fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
44411940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=SparseColorImage(constImage(),method_,numberArguments_,arguments_,
4442e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
44431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
44441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
444577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
44463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
44471940fe06f035ea32a4ec4df61f6897396877aa3cdirk
44481940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::splice(const Geometry &geometry_)
44493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
44501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
44511940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
44521940fe06f035ea32a4ec4df61f6897396877aa3cdirk
44531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RectangleInfo
44541940fe06f035ea32a4ec4df61f6897396877aa3cdirk    spliceInfo=geometry_;
44551940fe06f035ea32a4ec4df61f6897396877aa3cdirk
44561940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4457e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=SpliceImage(constImage(),&spliceInfo,exceptionInfo);
44581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
445977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
44603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
44613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
44623b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirkvoid Magick::Image::splice(const Geometry &geometry_,
44633b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk  const Color &backgroundColor_)
44643b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk{
44653b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk  backgroundColor(backgroundColor_);
44663b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk  splice(geometry_);
44673b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk}
44683b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk
44693b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirkvoid Magick::Image::splice(const Geometry &geometry_,
44703b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk  const Color &backgroundColor_,const GravityType gravity_)
44713b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk{
44723b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk  backgroundColor(backgroundColor_);
44733b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk  image()->gravity=gravity_;
44743b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk  splice(geometry_);
44753b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk}
44763b8649e1b0d73b281f3f4d3a005cc3c91960e1bcdirk
4477e11edabb5aa4d5be0301f8d652b33ef20889e76ddirkvoid Magick::Image::spread(const double amount_)
44788198a75baed6048bb2f5a2c04c773cce5e512c34cristy{
44791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
44801940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
44811940fe06f035ea32a4ec4df61f6897396877aa3cdirk
44821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4483e3319c152ba05d1d0c198b61289f4926cfa3e904Cristy  newImage=SpreadImage(constImage(),image()->interpolate,amount_,exceptionInfo);
44841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
448577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
44868198a75baed6048bb2f5a2c04c773cce5e512c34cristy}
44878198a75baed6048bb2f5a2c04c773cce5e512c34cristy
4488100c62ceee252ed475fca6a57b3dbaa3d27d2ed9dirkMagick::ImageStatistics Magick::Image::statistics() const
44893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
449077328896b876314656427663695bc7b2c9be3f74dirk  return(ImageStatistics(*this));
44919f89a3fdb53e6226e8361b6d7b422f0387aa9431cristy}
44929f89a3fdb53e6226e8361b6d7b422f0387aa9431cristy
44931940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::stegano(const Image &watermark_)
44943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
44951940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
44961940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
44973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
44981940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4499e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=SteganoImage(constImage(),watermark_.constImage(),exceptionInfo);
45001940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
450177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
45023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
45033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
45041940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::stereo(const Image &rightImage_)
45053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
45061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
45071940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
45083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
45091940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4510e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=StereoImage(constImage(),rightImage_.constImage(),exceptionInfo);
45111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
451277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
45133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
45143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
45151940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::strip(void)
45163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
45173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
45181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4519e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  StripImage(image(),exceptionInfo);
452077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
45213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
45223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4523c20fa63e4b57d62d33db77a5adc746ede902e5eddirkMagick::Image Magick::Image::subImageSearch(const Image &reference_,
4524c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  const MetricType metric_,Geometry *offset_,double *similarityMetric_,
4525c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  const double similarityThreshold)
4526c20fa63e4b57d62d33db77a5adc746ede902e5eddirk{
4527c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  MagickCore::Image
4528c20fa63e4b57d62d33db77a5adc746ede902e5eddirk    *newImage;
4529c20fa63e4b57d62d33db77a5adc746ede902e5eddirk
4530c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  RectangleInfo
4531c20fa63e4b57d62d33db77a5adc746ede902e5eddirk    offset;
4532c20fa63e4b57d62d33db77a5adc746ede902e5eddirk
4533c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  GetPPException;
4534c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  newImage=SimilarityImage(image(),reference_.constImage(),metric_,
4535e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    similarityThreshold,&offset,similarityMetric_,exceptionInfo);
453677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4537c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  if (offset_ != (Geometry *) NULL)
4538c20fa63e4b57d62d33db77a5adc746ede902e5eddirk    *offset_=offset;
4539c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  if (newImage == (MagickCore::Image *) NULL)
4540c20fa63e4b57d62d33db77a5adc746ede902e5eddirk    return(Magick::Image());
4541c20fa63e4b57d62d33db77a5adc746ede902e5eddirk  else
4542c20fa63e4b57d62d33db77a5adc746ede902e5eddirk    return(Magick::Image(newImage));
4543c20fa63e4b57d62d33db77a5adc746ede902e5eddirk}
4544c20fa63e4b57d62d33db77a5adc746ede902e5eddirk
45451940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::swirl(const double degrees_)
45463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
45471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
45481940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
45493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
45501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
45511940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=SwirlImage(constImage(),degrees_,image()->interpolate,
4552e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
45531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
455477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
45553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
45561940fe06f035ea32a4ec4df61f6897396877aa3cdirk
45571940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::syncPixels(void)
45583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
45591940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
45601d4a6951ace4a184f51cfd8c25b1586c6453be96cristy  (void) SyncAuthenticPixels(image(),exceptionInfo);
456177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
45623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
45633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
45641940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::texture(const Image &texture_)
45653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
45663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
45671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4568e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  TextureImage(image(),texture_.constImage(),exceptionInfo);
456977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
45703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
45713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
45721940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::threshold(const double threshold_)
45733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
45743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
45751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4576e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  BilevelImage(image(),threshold_,exceptionInfo);
457777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
45783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
45793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4580bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristyvoid Magick::Image::thumbnail(const Geometry &geometry_)
4581bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy{
4582bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy  MagickCore::Image
4583bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy    *newImage;
4584bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy
4585bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy  size_t
4586bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy    height=rows(),
4587bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy    width=columns();
4588bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy
4589bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy  ssize_t
4590bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy    x=0,
4591bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy    y=0;
4592bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy
4593bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy  ParseMetaGeometry(static_cast<std::string>(geometry_).c_str(),&x,&y,&width,
4594bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy    &height);
4595bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy
4596bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy  GetPPException;
4597e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ThumbnailImage(constImage(),width,height,exceptionInfo);
4598bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy  replaceImage(newImage);
459977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4600bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy}
4601bd85b6da2c4e91fa1136faa0c88510fb4378a8c4cristy
4602f1775d8f60a3ce551a096140d7559d46ba33ac14dirkvoid Magick::Image::tint(const std::string opacity_)
4603f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4604f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  MagickCore::Image
4605f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *newImage;
4606f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4607f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  PixelInfo
4608f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    color;
4609f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4610f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
4611f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  color=static_cast<PixelInfo>(constOptions()->fillColor());
4612e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=TintImage(constImage(),opacity_.c_str(),&color,exceptionInfo);
4613f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  replaceImage(newImage);
461477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4615f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4616f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
46171940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::transformOrigin(const double x_,const double y_)
46183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
46193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
46201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->transformOrigin(x_,y_);
46213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
46223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46231940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::transformReset(void)
46243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
46253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
46261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->transformReset();
46273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
46283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46291940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::transformScale(const double sx_,const double sy_)
46303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
46313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
46321940fe06f035ea32a4ec4df61f6897396877aa3cdirk  options()->transformScale(sx_,sy_);
46333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
46343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46352fcdcaf5f27967318e07808b67498cceac3b4125dirkvoid Magick::Image::transparent(const Color &color_,const bool inverse_)
46363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
46371940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
46381940fe06f035ea32a4ec4df61f6897396877aa3cdirk    target;
46393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46401940fe06f035ea32a4ec4df61f6897396877aa3cdirk  std::string
46411940fe06f035ea32a4ec4df61f6897396877aa3cdirk    color;
46423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!color_.isValid())
464477328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
464577328896b876314656427663695bc7b2c9be3f74dirk      "Color argument is invalid");
46463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  color=color_;
46481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
46491940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) QueryColorCompliance(color.c_str(),AllCompliance,&target,
4650e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
46513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
46522fcdcaf5f27967318e07808b67498cceac3b4125dirk  TransparentPaintImage(image(),&target,TransparentAlpha,
46532fcdcaf5f27967318e07808b67498cceac3b4125dirk    inverse_ == true ? MagickTrue : MagickFalse,exceptionInfo);
465477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
46553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
46563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46571940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::transparentChroma(const Color &colorLow_,
46581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const Color &colorHigh_)
46593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
46601940fe06f035ea32a4ec4df61f6897396877aa3cdirk  std::string
46611940fe06f035ea32a4ec4df61f6897396877aa3cdirk    colorHigh,
46621940fe06f035ea32a4ec4df61f6897396877aa3cdirk    colorLow;
46633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46641940fe06f035ea32a4ec4df61f6897396877aa3cdirk  PixelInfo
46651940fe06f035ea32a4ec4df61f6897396877aa3cdirk    targetHigh,
46661940fe06f035ea32a4ec4df61f6897396877aa3cdirk    targetLow;
46673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46681940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (!colorLow_.isValid() || !colorHigh_.isValid())
466977328896b876314656427663695bc7b2c9be3f74dirk    throwExceptionExplicit(MagickCore::OptionError,
467077328896b876314656427663695bc7b2c9be3f74dirk      "Color argument is invalid");
46713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  colorLow=colorLow_;
46731940fe06f035ea32a4ec4df61f6897396877aa3cdirk  colorHigh=colorHigh_;
46743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
46751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
46761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) QueryColorCompliance(colorLow.c_str(),AllCompliance,&targetLow,
4677e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
46781940fe06f035ea32a4ec4df61f6897396877aa3cdirk  (void) QueryColorCompliance(colorHigh.c_str(),AllCompliance,&targetHigh,
4679e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
46803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
46811940fe06f035ea32a4ec4df61f6897396877aa3cdirk  TransparentPaintImageChroma(image(),&targetLow,&targetHigh,TransparentAlpha,
4682e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    MagickFalse,exceptionInfo);
468377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
46843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
46853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4686982785cc04fa211e60b4c1ee8f28996c23c06e80dirkvoid Magick::Image::transpose(void)
4687982785cc04fa211e60b4c1ee8f28996c23c06e80dirk{
4688982785cc04fa211e60b4c1ee8f28996c23c06e80dirk  MagickCore::Image
4689982785cc04fa211e60b4c1ee8f28996c23c06e80dirk    *newImage;
4690982785cc04fa211e60b4c1ee8f28996c23c06e80dirk
4691982785cc04fa211e60b4c1ee8f28996c23c06e80dirk  GetPPException;
4692e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=TransposeImage(constImage(),exceptionInfo);
4693982785cc04fa211e60b4c1ee8f28996c23c06e80dirk  replaceImage(newImage);
469477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4695982785cc04fa211e60b4c1ee8f28996c23c06e80dirk}
4696982785cc04fa211e60b4c1ee8f28996c23c06e80dirk
4697982785cc04fa211e60b4c1ee8f28996c23c06e80dirkvoid Magick::Image::transverse(void)
4698982785cc04fa211e60b4c1ee8f28996c23c06e80dirk{
4699982785cc04fa211e60b4c1ee8f28996c23c06e80dirk  MagickCore::Image
4700982785cc04fa211e60b4c1ee8f28996c23c06e80dirk    *newImage;
4701982785cc04fa211e60b4c1ee8f28996c23c06e80dirk
4702982785cc04fa211e60b4c1ee8f28996c23c06e80dirk  GetPPException;
4703e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=TransverseImage(constImage(),exceptionInfo);
4704982785cc04fa211e60b4c1ee8f28996c23c06e80dirk  replaceImage(newImage);
470577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4706982785cc04fa211e60b4c1ee8f28996c23c06e80dirk}
4707982785cc04fa211e60b4c1ee8f28996c23c06e80dirk
47081940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::trim(void)
47093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
47101940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
47111940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
47123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
47131940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4714e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=TrimImage(constImage(),exceptionInfo);
47151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
471677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
47173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
47183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4719100c62ceee252ed475fca6a57b3dbaa3d27d2ed9dirkMagick::Image Magick::Image::uniqueColors(void) const
4720f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4721f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  MagickCore::Image
4722f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *image;
4723f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4724f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
4725e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  image=UniqueImageColors(constImage(),exceptionInfo);
472677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4727f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  if (image == (MagickCore::Image *) NULL)
4728f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    return(Magick::Image());
4729f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  else
4730f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    return(Magick::Image(image));
4731f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4732f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
47331940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::unsharpmask(const double radius_,const double sigma_,
47341940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double amount_,const double threshold_)
47353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
47361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
47371940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
47383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
47391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
47401940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=UnsharpMaskImage(constImage(),radius_,sigma_,amount_,threshold_,
4741e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
47421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
474377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
47443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
47453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
47461940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::unsharpmaskChannel(const ChannelType channel_,
47471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double radius_,const double sigma_,const double amount_,
47481940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const double threshold_)
47493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
47501940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
47511940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
47521940fe06f035ea32a4ec4df61f6897396877aa3cdirk
47531940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
47545fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
47551940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=UnsharpMaskImage(constImage(),radius_,sigma_,amount_,threshold_,
4756e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
47571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
47581940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
475977328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
47603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
47613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4762f1775d8f60a3ce551a096140d7559d46ba33ac14dirkvoid Magick::Image::vignette(const double radius_,const double sigma_,
4763f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  const ssize_t x_,const ssize_t y_)
4764f1775d8f60a3ce551a096140d7559d46ba33ac14dirk{
4765f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  MagickCore::Image
4766f1775d8f60a3ce551a096140d7559d46ba33ac14dirk    *newImage;
4767f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
4768f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  GetPPException;
4769e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=VignetteImage(constImage(),radius_,sigma_,x_,y_,exceptionInfo);
4770f1775d8f60a3ce551a096140d7559d46ba33ac14dirk  replaceImage(newImage);
477177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
4772f1775d8f60a3ce551a096140d7559d46ba33ac14dirk}
4773f1775d8f60a3ce551a096140d7559d46ba33ac14dirk
47741940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::wave(const double amplitude_,const double wavelength_)
47753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
47761940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
47771940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
47783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
47791940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
47801940fe06f035ea32a4ec4df61f6897396877aa3cdirk  newImage=WaveImage(constImage(),amplitude_,wavelength_,image()->interpolate,
4781e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
47821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
478377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
47843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
47853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4786906c77aa619f7206e279cc957e20c0aef5350a9bdirkvoid Magick::Image::waveletDenoise(const double threshold_,
4787906c77aa619f7206e279cc957e20c0aef5350a9bdirk  const double softness_)
47885afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk{
47895afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk  MagickCore::Image
47905afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk    *newImage;
47915afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk
47925afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk  GetPPException;
4793906c77aa619f7206e279cc957e20c0aef5350a9bdirk  newImage=WaveletDenoiseImage(constImage(),threshold_,softness_,
4794906c77aa619f7206e279cc957e20c0aef5350a9bdirk    exceptionInfo);
47955afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk  replaceImage(newImage);
47965afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk  ThrowImageException;
47975afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk}
47985afc3a6a4c6cc8a2226bbd96ea60c80d975b56ccdirk
47991940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::whiteThreshold(const std::string &threshold_)
48003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
48011940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
48021940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4803e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  WhiteThresholdImage(image(),threshold_.c_str(),exceptionInfo);
480477328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
48053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
48063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48071940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::whiteThresholdChannel(const ChannelType channel_,
48081940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const std::string &threshold_)
48093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
48101940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
48111940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
48125fed14e9fbe78e1ec8fe519505d0ac097a7878d2dirk  GetAndSetPPChannelMask(channel_);
4813e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  WhiteThresholdImage(image(),threshold_.c_str(),exceptionInfo);
48141940fe06f035ea32a4ec4df61f6897396877aa3cdirk  RestorePPChannelMask;
481577328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
48163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
48173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48181940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::write(Blob *blob_)
48193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
48201940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
4821a713b822f9efeef4aeb33c88084b77ca2c596b77dirk    length=0;
48223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48231940fe06f035ea32a4ec4df61f6897396877aa3cdirk  void
48241940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *data;
48253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
48271940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4828e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  data=ImagesToBlob(constImageInfo(),image(),&length,exceptionInfo);
4829a713b822f9efeef4aeb33c88084b77ca2c596b77dirk  if (length > 0)
4830a713b822f9efeef4aeb33c88084b77ca2c596b77dirk    blob_->updateNoCopy(data,length,Blob::MallocAllocator);
483177328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
48323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
48333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48341940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::write(Blob *blob_,const std::string &magick_)
48353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
48361940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
4837a713b822f9efeef4aeb33c88084b77ca2c596b77dirk    length=0;
48383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48391940fe06f035ea32a4ec4df61f6897396877aa3cdirk  void
48401940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *data;
48413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
48431940fe06f035ea32a4ec4df61f6897396877aa3cdirk  magick(magick_);
48441940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4845e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  data=ImagesToBlob(constImageInfo(),image(),&length,exceptionInfo);
4846a713b822f9efeef4aeb33c88084b77ca2c596b77dirk  if (length > 0)
4847a713b822f9efeef4aeb33c88084b77ca2c596b77dirk    blob_->updateNoCopy(data,length,Blob::MallocAllocator);
484877328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
48493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
48503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48511940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::write(Blob *blob_,const std::string &magick_,
48521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t depth_)
48533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
48541940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
4855a713b822f9efeef4aeb33c88084b77ca2c596b77dirk    length=0;
48563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  void
48581940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *data;
48593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  modifyImage();
48611940fe06f035ea32a4ec4df61f6897396877aa3cdirk  magick(magick_);
48621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  depth(depth_);
48631940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4864e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  data=ImagesToBlob(constImageInfo(),image(),&length,exceptionInfo);
4865a713b822f9efeef4aeb33c88084b77ca2c596b77dirk  if (length > 0)
4866a713b822f9efeef4aeb33c88084b77ca2c596b77dirk    blob_->updateNoCopy(data,length,Blob::MallocAllocator);
486777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
48683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
48693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48701940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::write(const ssize_t x_,const ssize_t y_,
48711940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const size_t columns_,const size_t rows_,const std::string &map_,
48721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  const StorageType type_,void *pixels_)
48733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
48741940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
48751940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ExportImagePixels(image(),x_,y_,columns_,rows_,map_.c_str(),type_,pixels_,
4876e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    exceptionInfo);
487777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
48783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
48793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
48801940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::write(const std::string &imageSpec_)
48813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
48821940fe06f035ea32a4ec4df61f6897396877aa3cdirk  modifyImage();
48831940fe06f035ea32a4ec4df61f6897396877aa3cdirk  fileName(imageSpec_);
48841940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4885e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  WriteImage(constImageInfo(),image(),exceptionInfo);
488677328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
48873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
48883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4889af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirkvoid Magick::Image::writeMask(const Magick::Image &mask_)
4890af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk{
4891af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  mask(mask_,WritePixelMask);
4892af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk}
4893af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
4894af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirkMagick::Image Magick::Image::writeMask(void) const
4895af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk{
4896af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  return(mask(WritePixelMask));
4897af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk}
4898af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
48991940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::writePixels(const Magick::QuantumType quantum_,
49001940fe06f035ea32a4ec4df61f6897396877aa3cdirk  unsigned char *destination_)
49013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  QuantumInfo
49033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *quantum_info;
49043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49055f766ef8b0cd9906c2c3a56d845828380a251073cristy  quantum_info=AcquireQuantumInfo(imageInfo(),image());
49061940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
49073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ExportQuantumPixels(image(),(MagickCore::CacheView *) NULL,quantum_info,
4908e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk    quantum_,destination_, exceptionInfo);
49093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  quantum_info=DestroyQuantumInfo(quantum_info);
491077328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
49113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49131940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::zoom(const Geometry &geometry_)
49141940fe06f035ea32a4ec4df61f6897396877aa3cdirk{
49151940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
49161940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *newImage;
49173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49181940fe06f035ea32a4ec4df61f6897396877aa3cdirk  size_t
49191940fe06f035ea32a4ec4df61f6897396877aa3cdirk    height=rows(),
49201940fe06f035ea32a4ec4df61f6897396877aa3cdirk    width=columns();
49213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49221940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ssize_t
49231940fe06f035ea32a4ec4df61f6897396877aa3cdirk    x=0,
49241940fe06f035ea32a4ec4df61f6897396877aa3cdirk    y=0;
49251940fe06f035ea32a4ec4df61f6897396877aa3cdirk
49261940fe06f035ea32a4ec4df61f6897396877aa3cdirk  ParseMetaGeometry(static_cast<std::string>(geometry_).c_str(),&x,&y,&width,
49271940fe06f035ea32a4ec4df61f6897396877aa3cdirk    &height);
49281940fe06f035ea32a4ec4df61f6897396877aa3cdirk
49291940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4930e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  newImage=ResizeImage(constImage(),width,height,image()->filter,exceptionInfo);
49311940fe06f035ea32a4ec4df61f6897396877aa3cdirk  replaceImage(newImage);
493277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
49333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49351940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Image::Image(MagickCore::Image *image_)
493607f84e72b205d18eb8ad35380af95351d9f0a1a3dirk  : _imgRef(new ImageRef(image_))
49373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49391940fe06f035ea32a4ec4df61f6897396877aa3cdirk
49401940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickCore::Image *&Magick::Image::image(void)
49413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49421940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(_imgRef->image());
49433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49451940fe06f035ea32a4ec4df61f6897396877aa3cdirkconst MagickCore::Image *Magick::Image::constImage(void) const
49463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49471940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(_imgRef->image());
49483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49491940fe06f035ea32a4ec4df61f6897396877aa3cdirk
49501940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickCore::ImageInfo *Magick::Image::imageInfo(void)
49513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49521940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(_imgRef->options()->imageInfo());
49533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49551940fe06f035ea32a4ec4df61f6897396877aa3cdirkconst MagickCore::ImageInfo *Magick::Image::constImageInfo(void) const
49563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49571940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(_imgRef->options()->imageInfo());
49583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49591940fe06f035ea32a4ec4df61f6897396877aa3cdirk
49601940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagick::Options *Magick::Image::options(void)
49613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49621940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(_imgRef->options());
49633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49651940fe06f035ea32a4ec4df61f6897396877aa3cdirkconst Magick::Options *Magick::Image::constOptions(void) const
49663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49671940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(_imgRef->options());
49683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49691940fe06f035ea32a4ec4df61f6897396877aa3cdirk
49701940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickCore::QuantizeInfo *Magick::Image::quantizeInfo(void)
49713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49721940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(_imgRef->options()->quantizeInfo());
49733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49751940fe06f035ea32a4ec4df61f6897396877aa3cdirkconst MagickCore::QuantizeInfo *Magick::Image::constQuantizeInfo(void) const
49763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49771940fe06f035ea32a4ec4df61f6897396877aa3cdirk  return(_imgRef->options()->quantizeInfo());
49783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49801940fe06f035ea32a4ec4df61f6897396877aa3cdirkvoid Magick::Image::modifyImage(void)
49813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49824b39a1ba9e9e98ae9847be7f1dee1034eab7076fdirk  if (!_imgRef->isShared())
4983debd02e3cb441e34f5b63bbfbf69e404f8135159dirk    return;
49843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49851940fe06f035ea32a4ec4df61f6897396877aa3cdirk  GetPPException;
4986e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk  replaceImage(CloneImage(image(),0,0,MagickTrue,exceptionInfo));
498777328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
49883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
49893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49901940fe06f035ea32a4ec4df61f6897396877aa3cdirkMagickCore::Image *Magick::Image::replaceImage(MagickCore::Image *replacement_)
49913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
49921940fe06f035ea32a4ec4df61f6897396877aa3cdirk  MagickCore::Image
49931940fe06f035ea32a4ec4df61f6897396877aa3cdirk    *image;
49943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
49951940fe06f035ea32a4ec4df61f6897396877aa3cdirk  if (replacement_)
4996debd02e3cb441e34f5b63bbfbf69e404f8135159dirk    image=replacement_;
49971940fe06f035ea32a4ec4df61f6897396877aa3cdirk  else
49983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
49991940fe06f035ea32a4ec4df61f6897396877aa3cdirk      GetPPException;
5000e31feb8a39ea937a6328da579085cd2ee66ab4c0dirk      image=AcquireImage(constImageInfo(),exceptionInfo);
500177328896b876314656427663695bc7b2c9be3f74dirk      ThrowImageException;
50023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
50033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
50041888443d44c6a29f8d0836521a9c6a34b3a12006dirk  _imgRef=ImageRef::replaceImage(_imgRef,image);
5005debd02e3cb441e34f5b63bbfbf69e404f8135159dirk  return(image);
500695f389652b69ee5487f18e744b7f54dcda1c733cdirk}
500795f389652b69ee5487f18e744b7f54dcda1c733cdirk
5008671b5d721987b2a12d84b656de888be1c99aa881dirkvoid Magick::Image::read(MagickCore::Image *image,
5009671b5d721987b2a12d84b656de888be1c99aa881dirk  MagickCore::ExceptionInfo *exceptionInfo)
5010671b5d721987b2a12d84b656de888be1c99aa881dirk{
5011671b5d721987b2a12d84b656de888be1c99aa881dirk  // Ensure that multiple image frames were not read.
5012671b5d721987b2a12d84b656de888be1c99aa881dirk  if (image != (MagickCore::Image *) NULL &&
5013671b5d721987b2a12d84b656de888be1c99aa881dirk      image->next != (MagickCore::Image *) NULL)
5014671b5d721987b2a12d84b656de888be1c99aa881dirk    {
5015671b5d721987b2a12d84b656de888be1c99aa881dirk      MagickCore::Image
5016671b5d721987b2a12d84b656de888be1c99aa881dirk        *next;
5017671b5d721987b2a12d84b656de888be1c99aa881dirk
5018671b5d721987b2a12d84b656de888be1c99aa881dirk      // Destroy any extra image frames
5019671b5d721987b2a12d84b656de888be1c99aa881dirk      next=image->next;
5020671b5d721987b2a12d84b656de888be1c99aa881dirk      image->next=(MagickCore::Image *) NULL;
5021671b5d721987b2a12d84b656de888be1c99aa881dirk      next->previous=(MagickCore::Image *) NULL;
5022671b5d721987b2a12d84b656de888be1c99aa881dirk      DestroyImageList(next);
5023671b5d721987b2a12d84b656de888be1c99aa881dirk    }
5024671b5d721987b2a12d84b656de888be1c99aa881dirk  replaceImage(image);
5025671b5d721987b2a12d84b656de888be1c99aa881dirk  if (exceptionInfo->severity == MagickCore::UndefinedException &&
5026671b5d721987b2a12d84b656de888be1c99aa881dirk      image == (MagickCore::Image *) NULL)
5027671b5d721987b2a12d84b656de888be1c99aa881dirk    {
5028671b5d721987b2a12d84b656de888be1c99aa881dirk      (void) MagickCore::DestroyExceptionInfo(exceptionInfo);
502907f84e72b205d18eb8ad35380af95351d9f0a1a3dirk      if (!quiet())
503077328896b876314656427663695bc7b2c9be3f74dirk        throwExceptionExplicit(MagickCore::ImageWarning,
503177328896b876314656427663695bc7b2c9be3f74dirk          "No image was loaded.");
5032671b5d721987b2a12d84b656de888be1c99aa881dirk    }
503377328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
5034671b5d721987b2a12d84b656de888be1c99aa881dirk}
5035671b5d721987b2a12d84b656de888be1c99aa881dirk
5036223843f66554713ee926b09f958ff6bfdb5acb61dirkvoid Magick::Image::floodFill(const ssize_t x_,const ssize_t y_,
5037223843f66554713ee926b09f958ff6bfdb5acb61dirk  const Magick::Image *fillPattern_,const Magick::Color &fill_,
5038223843f66554713ee926b09f958ff6bfdb5acb61dirk  const MagickCore::PixelInfo *target_,const bool invert_)
5039223843f66554713ee926b09f958ff6bfdb5acb61dirk{
5040223843f66554713ee926b09f958ff6bfdb5acb61dirk  Magick::Color
5041223843f66554713ee926b09f958ff6bfdb5acb61dirk    fillColor;
5042223843f66554713ee926b09f958ff6bfdb5acb61dirk
5043223843f66554713ee926b09f958ff6bfdb5acb61dirk  MagickCore::Image
5044223843f66554713ee926b09f958ff6bfdb5acb61dirk    *fillPattern;
5045223843f66554713ee926b09f958ff6bfdb5acb61dirk
5046223843f66554713ee926b09f958ff6bfdb5acb61dirk  // Set drawing fill pattern or fill color
5047223843f66554713ee926b09f958ff6bfdb5acb61dirk  fillColor=options()->fillColor();
5048223843f66554713ee926b09f958ff6bfdb5acb61dirk  fillPattern=(MagickCore::Image *)NULL;
5049223843f66554713ee926b09f958ff6bfdb5acb61dirk  if (options()->fillPattern() != (MagickCore::Image *)NULL)
5050223843f66554713ee926b09f958ff6bfdb5acb61dirk    {
5051223843f66554713ee926b09f958ff6bfdb5acb61dirk      GetPPException;
5052223843f66554713ee926b09f958ff6bfdb5acb61dirk      fillPattern=CloneImage(options()->fillPattern(),0,0,MagickTrue,
5053223843f66554713ee926b09f958ff6bfdb5acb61dirk        exceptionInfo);
505477328896b876314656427663695bc7b2c9be3f74dirk      ThrowImageException;
5055223843f66554713ee926b09f958ff6bfdb5acb61dirk    }
5056223843f66554713ee926b09f958ff6bfdb5acb61dirk
5057223843f66554713ee926b09f958ff6bfdb5acb61dirk  if (fillPattern_ == (Magick::Image *)NULL)
5058223843f66554713ee926b09f958ff6bfdb5acb61dirk    {
5059223843f66554713ee926b09f958ff6bfdb5acb61dirk      options()->fillPattern((MagickCore::Image *)NULL);
5060223843f66554713ee926b09f958ff6bfdb5acb61dirk      options()->fillColor(fill_);
5061223843f66554713ee926b09f958ff6bfdb5acb61dirk    }
5062223843f66554713ee926b09f958ff6bfdb5acb61dirk  else
5063223843f66554713ee926b09f958ff6bfdb5acb61dirk    options()->fillPattern(fillPattern_->constImage());
5064223843f66554713ee926b09f958ff6bfdb5acb61dirk
5065223843f66554713ee926b09f958ff6bfdb5acb61dirk  GetPPException;
5066223843f66554713ee926b09f958ff6bfdb5acb61dirk  (void) FloodfillPaintImage(image(),options()->drawInfo(),
5067223843f66554713ee926b09f958ff6bfdb5acb61dirk    target_,static_cast<ssize_t>(x_),static_cast<ssize_t>(y_),
5068223843f66554713ee926b09f958ff6bfdb5acb61dirk    (MagickBooleanType) invert_,exceptionInfo);
5069223843f66554713ee926b09f958ff6bfdb5acb61dirk
5070223843f66554713ee926b09f958ff6bfdb5acb61dirk  options()->fillColor(fillColor);
5071223843f66554713ee926b09f958ff6bfdb5acb61dirk  options()->fillPattern(fillPattern);
507277328896b876314656427663695bc7b2c9be3f74dirk  ThrowImageException;
5073223843f66554713ee926b09f958ff6bfdb5acb61dirk}
5074af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
5075af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirkvoid Magick::Image::mask(const Magick::Image &mask_,const PixelMask type)
5076af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk{
5077af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  modifyImage();
5078af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
5079af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  GetPPException;
5080af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  if (mask_.isValid())
5081af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk    SetImageMask(image(),type,mask_.constImage(),exceptionInfo);
5082af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  else
5083af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk    SetImageMask(image(),type,(MagickCore::Image *) NULL,
5084af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk      exceptionInfo);
5085af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  ThrowImageException;
5086af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk}
5087af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
5088af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirkMagick::Image Magick::Image::mask(const PixelMask type) const
5089af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk{
5090af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  MagickCore::Image
5091af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk    *image;
5092af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
5093af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  GetPPException;
5094af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  image = GetImageMask(constImage(),type,exceptionInfo);
5095af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  ThrowImageException;
5096af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk
5097af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  if (image == (MagickCore::Image *) NULL)
5098af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk    return(Magick::Image());
5099af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk  else
5100af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk    return(Magick::Image(image));
5101af131f1a1e0ca45f26b05fa7c77c90985bca1a07dirk}
5102