]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Wed, 4 May 2011 23:03:43 +0000 (23:03 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Wed, 4 May 2011 23:03:43 +0000 (23:03 +0000)
108 files changed:
ImageMagick.spec
config/configure.xml
index.html
libtool
magick/deprecate.c
magick/pixel.h
magick/version.h
version.sh
www/ImageMagickObject.html
www/advanced-unix-installation.html
www/advanced-windows-installation.html
www/animate.html
www/api.html
www/api/animate.html
www/api/annotate.html
www/api/attribute.html
www/api/blob.html
www/api/cache-view.html
www/api/cipher.html
www/api/color.html
www/api/colormap.html
www/api/compare.html
www/api/composite.html
www/api/constitute.html
www/api/decorate.html
www/api/deprecate.html
www/api/display.html
www/api/distort.html
www/api/draw.html
www/api/drawing-wand.html
www/api/enhance.html
www/api/exception.html
www/api/feature.html
www/api/fourier.html
www/api/fx.html
www/api/histogram.html
www/api/image-view.html
www/api/image.html
www/api/layer.html
www/api/magick-deprecate.html
www/api/magick-image.html
www/api/magick-property.html
www/api/magick-wand.html
www/api/magick.html
www/api/memory.html
www/api/module.html
www/api/mogrify.html
www/api/montage.html
www/api/morphology.html
www/api/pixel-iterator.html
www/api/pixel-wand.html
www/api/profile.html
www/api/property.html
www/api/registry.html
www/api/resize.html
www/api/resource.html
www/api/segment.html
www/api/shear.html
www/api/signature.html
www/api/stream.html
www/api/transform.html
www/api/version.html
www/api/wand-view.html
www/architecture.html
www/binary-releases.html
www/changelog.html
www/cipher.html
www/color.html
www/command-line-options.html
www/command-line-processing.html
www/command-line-tools.html
www/compare.html
www/compose.html
www/composite.html
www/conjure.html
www/contact.html
www/convert.html
www/display.html
www/download.html
www/escape.html
www/examples.html
www/exception.html
www/export.html
www/formats.html
www/fx.html
www/high-dynamic-range.html
www/identify.html
www/import.html
www/index.html
www/jp2.html
www/links.html
www/magick++.html
www/magick-core.html
www/magick-vector-graphics.html
www/magick-wand.html
www/miff.html
www/mogrify.html
www/montage.html
www/motion-picture.html
www/perl-magick.html
www/quantize.html
www/resources.html
www/sitemap.html
www/source/analyze.c
www/source/mgk.c
www/sponsors.html
www/stream.html
www/subversion.html

index 9241b690e1d7dd9d76d4471eefe78bad55741fe5..3d9a29ef7cdc9d03e72a44fc92813f59570a61b6 100644 (file)
@@ -1,5 +1,5 @@
 %global VERSION  6.6.9
-%global Patchlevel  8
+%global Patchlevel  9
 
 Name:           ImageMagick
 Version:        %{VERSION}
index dc84eb8a0e2cf29aae21eec23d792d2781b05d2c..50fbe300a80d255a626d1ff64a0f1a53b48f6a38 100644 (file)
@@ -9,7 +9,7 @@
   <configure name="NAME" value="ImageMagick"/>
   <configure name="VERSION" value="6.6.9"/>
   <configure name="LIB_VERSION" value="0x669"/>
-  <configure name="LIB_VERSION_NUMBER" value="6,6,9,8"/>
+  <configure name="LIB_VERSION_NUMBER" value="6,6,9,9"/>
   <configure name="SVN_REVISION" value="4407" />
   <configure name="RELEASE_DATE" value="2011-05-04"/>
   <configure name="CONFIGURE" value="./configure "/>
index 852840b767ae078889b8793060493f6ca2f94bce..f7eb43813c757ddf53a82c2696424ea81e4fde91 100644 (file)
 
 <p>The ImageMagick development process ensures a stable API and ABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes <a href="http://www.valgrind.org">memory and thread</a> error detection to prevent security vulnerabilities.</p>
 
-<p>The current release is ImageMagick 6.6.9-7.</p>
+<p>The current release is ImageMagick 6.6.9-8.</p>
 
 </div>
 
diff --git a/libtool b/libtool
index fcf481b9d5343819764955482d548fc7ffb4fc13..5f96c0c759f3e3a75846b4ecf3fece20046cd9fd 100755 (executable)
--- a/libtool
+++ b/libtool
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # libtool - Provide generalized library-building support services.
-# Generated automatically by config.status (ImageMagick) 6.6.9-8
+# Generated automatically by config.status (ImageMagick) 6.6.9-9
 # Libtool was configured on host magick.imagemagick.org:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
index a2c5569fcd3c2e8f64e24b798e924b43d0a73c6e..25f118992f30eb36cef3dcd1c2d9bcacb2d9b479 100644 (file)
@@ -10,7 +10,7 @@
 %        DDDD   EEEEE  P      R  R   EEEEE   CCCC  A   A    T    EEEEE        %
 %                                                                             %
 %                                                                             %
-%                        MagickCore Deprecated Methods                        %
+%                       MagickWand Deprecated Methods                         %
 %                                                                             %
 %                              Software Design                                %
 %                                John Cristy                                  %
 /*
   Include declarations.
 */
-#include "magick/studio.h"
-#include "magick/property.h"
-#include "magick/blob.h"
-#include "magick/blob-private.h"
-#include "magick/cache.h"
-#include "magick/cache-view.h"
-#include "magick/client.h"
-#include "magick/color.h"
-#include "magick/color-private.h"
-#include "magick/colormap.h"
-#include "magick/colormap-private.h"
-#include "magick/colorspace.h"
-#include "magick/composite.h"
-#include "magick/composite-private.h"
-#include "magick/constitute.h"
-#include "magick/deprecate.h"
-#include "magick/draw.h"
-#include "magick/draw-private.h"
-#include "magick/effect.h"
-#include "magick/enhance.h"
-#include "magick/exception.h"
-#include "magick/exception-private.h"
-#include "magick/fx.h"
-#include "magick/geometry.h"
-#include "magick/identify.h"
-#include "magick/image.h"
-#include "magick/image-private.h"
-#include "magick/list.h"
-#include "magick/log.h"
-#include "magick/memory_.h"
-#include "magick/magick.h"
-#include "magick/monitor.h"
+#include "wand/studio.h"
+#include "wand/MagickWand.h"
+#include "wand/magick-wand-private.h"
+#include "wand/wand.h"
 #include "magick/monitor-private.h"
-#include "magick/morphology.h"
-#include "magick/paint.h"
-#include "magick/pixel.h"
-#include "magick/pixel-private.h"
-#include "magick/quantize.h"
-#include "magick/random_.h"
-#include "magick/resource_.h"
-#include "magick/semaphore.h"
-#include "magick/segment.h"
-#include "magick/splay-tree.h"
-#include "magick/statistic.h"
-#include "magick/string_.h"
-#include "magick/threshold.h"
-#include "magick/transform.h"
-#include "magick/utility.h"
+#include "magick/thread-private.h"
+\f
+/*
+  Define declarations.
+*/
+#define PixelViewId  "PixelView"
+#define ThrowWandException(severity,tag,context) \
+{ \
+  (void) ThrowMagickException(wand->exception,GetMagickModule(),severity, \
+    tag,"`%s'",context); \
+  return(MagickFalse); \
+}
 \f
-#if !defined(MAGICKCORE_EXCLUDE_DEPRECATED)
 /*
-  Global declarations.
+  Typedef declarations.
 */
-static MonitorHandler
-  monitor_handler = (MonitorHandler) NULL;
+struct _PixelView
+{
+  size_t
+    id;
+
+  char
+    name[MaxTextExtent];
+
+  ExceptionInfo
+    *exception;
+
+  MagickWand
+    *wand;
+
+  CacheView
+    *view;
+
+  RectangleInfo
+    region;
+
+  size_t
+    number_threads;
+
+  PixelWand
+    ***pixel_wands;
+
+  MagickBooleanType
+    debug;
+
+  size_t
+    signature;
+};
+\f
+#if !defined(MAGICKCORE_EXCLUDE_DEPRECATED)
 \f
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e C a c h e V i e w I n d e x e s                             %
+%   M a g i c k A v e r a g e I m a g e s                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireCacheViewIndexes() returns the indexes associated with the specified
-%  view.
-%
-%  Deprecated, replace with:
+%  MagickAverageImages() average a set of images.
 %
-%    GetCacheViewVirtualIndexQueue(cache_view);
+%  The format of the MagickAverageImages method is:
 %
-%  The format of the AcquireCacheViewIndexes method is:
-%
-%      const IndexPacket *AcquireCacheViewIndexes(const CacheView *cache_view)
+%      MagickWand *MagickAverageImages(MagickWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o cache_view: the cache view.
+%    o wand: the magick wand.
 %
 */
-MagickExport const IndexPacket *AcquireCacheViewIndexes(
-  const CacheView *cache_view)
+
+static MagickWand *CloneMagickWandFromImages(const MagickWand *wand,
+  Image *images)
+{
+  MagickWand
+    *clone_wand;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  clone_wand=(MagickWand *) AcquireMagickMemory(sizeof(*clone_wand));
+  if (clone_wand == (MagickWand *) NULL)
+    ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
+      images->filename);
+  (void) ResetMagickMemory(clone_wand,0,sizeof(*clone_wand));
+  clone_wand->id=AcquireWandId();
+  (void) FormatMagickString(clone_wand->name,MaxTextExtent,"%s-%.20g",
+    MagickWandId,(double) clone_wand->id);
+  clone_wand->exception=AcquireExceptionInfo();
+  InheritException(clone_wand->exception,wand->exception);
+  clone_wand->image_info=CloneImageInfo(wand->image_info);
+  clone_wand->quantize_info=CloneQuantizeInfo(wand->quantize_info);
+  clone_wand->images=images;
+  clone_wand->debug=IsEventLogging();
+  if (clone_wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",clone_wand->name);
+  clone_wand->signature=WandSignature;
+  return(clone_wand);
+}
+
+WandExport MagickWand *MagickAverageImages(MagickWand *wand)
 {
-  return(GetCacheViewVirtualIndexQueue(cache_view));
+  Image
+    *average_image;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    return((MagickWand *) NULL);
+  average_image=EvaluateImages(wand->images,MeanEvaluateOperator,
+    wand->exception);
+  if (average_image == (Image *) NULL)
+    return((MagickWand *) NULL);
+  return(CloneMagickWandFromImages(wand,average_image));
 }
 \f
 /*
@@ -134,41 +172,56 @@ MagickExport const IndexPacket *AcquireCacheViewIndexes(
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e C a c h e V i e w P i x e l s                               %
+%   C l o n e P i x e l V i e w                                               %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireCacheViewPixels() gets pixels from the in-memory or disk pixel cache
-%  as defined by the geometry parameters.   A pointer to the pixels is returned
-%  if the pixels are transferred, otherwise a NULL is returned.
+%  ClonePixelView() makes a copy of the specified pixel view.
 %
-%  Deprecated, replace with:
+%  The format of the ClonePixelView method is:
 %
-%    GetCacheViewVirtualPixels(cache_view,x,y,columns,rows,exception);
-%
-%  The format of the AcquireCacheViewPixels method is:
-%
-%      const PixelPacket *AcquireCacheViewPixels(const CacheView *cache_view,
-%        const ssize_t x,const ssize_t y,const size_t columns,
-%        const size_t rows,ExceptionInfo *exception)
+%      PixelView *ClonePixelView(const PixelView *pixel_view)
 %
 %  A description of each parameter follows:
 %
-%    o cache_view: the cache view.
-%
-%    o x,y,columns,rows:  These values define the perimeter of a region of
-%      pixels.
-%
-%    o exception: return any errors or warnings in this structure.
+%    o pixel_view: the pixel view.
 %
 */
-MagickExport const PixelPacket *AcquireCacheViewPixels(
-  const CacheView *cache_view,const ssize_t x,const ssize_t y,
-  const size_t columns,const size_t rows,ExceptionInfo *exception)
+WandExport PixelView *ClonePixelView(const PixelView *pixel_view)
 {
-  return(GetCacheViewVirtualPixels(cache_view,x,y,columns,rows,exception));
+  PixelView
+    *clone_view;
+
+  register ssize_t
+    i;
+
+  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  if (pixel_view->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",pixel_view->name);
+  clone_view=(PixelView *) AcquireMagickMemory(sizeof(*clone_view));
+  if (clone_view == (PixelView *) NULL)
+    ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
+      pixel_view->name);
+  (void) ResetMagickMemory(clone_view,0,sizeof(*clone_view));
+  clone_view->id=AcquireWandId();
+  (void) FormatMagickString(clone_view->name,MaxTextExtent,"%s-%.20g",
+    PixelViewId,(double) clone_view->id);
+  clone_view->exception=AcquireExceptionInfo();
+  InheritException(clone_view->exception,pixel_view->exception);
+  clone_view->view=CloneCacheView(pixel_view->view);
+  clone_view->region=pixel_view->region;
+  clone_view->number_threads=pixel_view->number_threads;
+  for (i=0; i < (ssize_t) pixel_view->number_threads; i++)
+    clone_view->pixel_wands[i]=ClonePixelWands((const PixelWand **)
+      pixel_view->pixel_wands[i],pixel_view->region.width);
+  clone_view->debug=pixel_view->debug;
+  if (clone_view->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",clone_view->name);
+  clone_view->signature=WandSignature;
+  return(clone_view);
 }
 \f
 /*
@@ -176,57 +229,55 @@ MagickExport const PixelPacket *AcquireCacheViewPixels(
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e I m a g e P i x e l s                                       %
-%                                                                             % %                                                                             %
+%   D e s t r o y P i x e l V i e w                                           %
+%                                                                             %
+%                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireImagePixels() returns an immutable pixel region. If the
-%  region is successfully accessed, a pointer to it is returned, otherwise
-%  NULL is returned. The returned pointer may point to a temporary working
-%  copy of the pixels or it may point to the original pixels in memory.
-%  Performance is maximized if the selected region is part of one row, or one
-%  or more full rows, since there is opportunity to access the pixels in-place
-%  (without a copy) if the image is in RAM, or in a memory-mapped file.  The
-%  returned pointer should *never* be deallocated by the user.
+%  DestroyPixelView() deallocates memory associated with a pixel view.
 %
-%  Pixels accessed via the returned pointer represent a simple array of type
-%  PixelPacket.  If the image type is CMYK or the storage class is PseudoClass,
-%  call GetAuthenticIndexQueue() after invoking GetAuthenticPixels() to access
-%  the black color component or to obtain the colormap indexes (of type
-%  IndexPacket) corresponding to the region.
+%  The format of the DestroyPixelView method is:
 %
-%  If you plan to modify the pixels, use GetAuthenticPixels() instead.
-%
-%  Note, the AcquireImagePixels() and GetAuthenticPixels() methods are not
-%  thread-safe.  In a threaded environment, use GetCacheViewVirtualPixels() or
-%  GetCacheViewAuthenticPixels() instead.
-%
-%  Deprecated, replace with:
-%
-%    GetVirtualPixels(image,x,y,columns,rows,exception);
-%
-%  The format of the AcquireImagePixels() method is:
-%
-%      const PixelPacket *AcquireImagePixels(const Image *image,const ssize_t x,
-%        const ssize_t y,const size_t columns,const size_t rows,
-%        ExceptionInfo *exception)
+%      PixelView *DestroyPixelView(PixelView *pixel_view,
+%        const size_t number_wands,const size_t number_threads)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o pixel_view: the pixel view.
 %
-%    o x,y,columns,rows:  These values define the perimeter of a region of
-%      pixels.
+%    o number_wand: the number of pixel wands.
 %
-%    o exception: return any errors or warnings in this structure.
+%    o number_threads: number of threads.
 %
 */
-MagickExport const PixelPacket *AcquireImagePixels(const Image *image,
-  const ssize_t x,const ssize_t y,const size_t columns,
-  const size_t rows,ExceptionInfo *exception)
+
+static PixelWand ***DestroyPixelsThreadSet(PixelWand ***pixel_wands,
+  const size_t number_wands,const size_t number_threads)
 {
-  return(GetVirtualPixels(image,x,y,columns,rows,exception));
+  register ssize_t
+    i;
+
+  assert(pixel_wands != (PixelWand ***) NULL);
+  for (i=0; i < (ssize_t) number_threads; i++)
+    if (pixel_wands[i] != (PixelWand **) NULL)
+      pixel_wands[i]=DestroyPixelWands(pixel_wands[i],number_wands);
+  pixel_wands=(PixelWand ***) RelinquishMagickMemory(pixel_wands);
+  return(pixel_wands);
+}
+
+WandExport PixelView *DestroyPixelView(PixelView *pixel_view)
+{
+  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  pixel_view->pixel_wands=DestroyPixelsThreadSet(pixel_view->pixel_wands,
+    pixel_view->region.width,pixel_view->number_threads);
+  pixel_view->view=DestroyCacheView(pixel_view->view);
+  pixel_view->exception=DestroyExceptionInfo(pixel_view->exception);
+  pixel_view->signature=(~WandSignature);
+  RelinquishWandId(pixel_view->id);
+  pixel_view=(PixelView *) RelinquishMagickMemory(pixel_view);
+  return(pixel_view);
 }
 \f
 /*
@@ -234,36 +285,197 @@ MagickExport const PixelPacket *AcquireImagePixels(const Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e I n d e x e s                                               %
+%   D u p l e x T r a n s f e r P i x e l V i e w I t e r a t o r             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireIndexes() returns the black channel or the colormap indexes
-%  associated with the last call to QueueAuthenticPixels() or
-%  GetVirtualPixels().  NULL is returned if the black channel or colormap
-%  indexes are not available.
+%  DuplexTransferPixelViewIterator() iterates over three pixel views in
+%  parallel and calls your transfer method for each scanline of the view.  The
+%  source and duplex pixel region is not confined to the image canvas-- that is
+%  you can include negative offsets or widths or heights that exceed the image
+%  dimension.  However, the destination pixel view is confined to the image
+%  canvas-- that is no negative offsets or widths or heights that exceed the
+%  image dimension are permitted.
 %
-%  Deprecated, replace with:
+%  Use this pragma:
 %
-%    GetVirtualIndexQueue(image);
+%    #pragma omp critical
 %
-%  The format of the AcquireIndexes() method is:
+%  to define a section of code in your callback transfer method that must be
+%  executed by a single thread at a time.
 %
-%      const IndexPacket *AcquireIndexes(const Image *image)
+%  The format of the DuplexTransferPixelViewIterator method is:
+%
+%      MagickBooleanType DuplexTransferPixelViewIterator(PixelView *source,
+%        PixelView *duplex,PixelView *destination,
+%        DuplexTransferPixelViewMethod transfer,void *context)
 %
 %  A description of each parameter follows:
 %
-%    o indexes: AcquireIndexes() returns the indexes associated with the last
-%      call to QueueAuthenticPixels() or GetVirtualPixels().
+%    o source: the source pixel view.
+%
+%    o duplex: the duplex pixel view.
 %
-%    o image: the image.
+%    o destination: the destination pixel view.
+%
+%    o transfer: the transfer callback method.
+%
+%    o context: the user defined context.
 %
 */
-MagickExport const IndexPacket *AcquireIndexes(const Image *image)
+WandExport MagickBooleanType DuplexTransferPixelViewIterator(
+  PixelView *source,PixelView *duplex,PixelView *destination,
+  DuplexTransferPixelViewMethod transfer,void *context)
 {
-  return(GetVirtualIndexQueue(image));
+#define DuplexTransferPixelViewTag  "PixelView/DuplexTransfer"
+
+  ExceptionInfo
+    *exception;
+
+  Image
+    *destination_image,
+    *duplex_image,
+    *source_image;
+
+  MagickBooleanType
+    status;
+
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(source != (PixelView *) NULL);
+  assert(source->signature == WandSignature);
+  if (transfer == (DuplexTransferPixelViewMethod) NULL)
+    return(MagickFalse);
+  source_image=source->wand->images;
+  duplex_image=duplex->wand->images;
+  destination_image=destination->wand->images;
+  if (SetImageStorageClass(destination_image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  status=MagickTrue;
+  progress=0;
+  exception=destination->exception;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=source->region.y; y < (ssize_t) source->region.height; y++)
+  {
+    const int
+      id = GetOpenMPThreadId();
+
+    MagickBooleanType
+      sync;
+
+    register const IndexPacket
+      *restrict duplex_indexes,
+      *restrict indexes;
+
+    register const PixelPacket
+      *restrict duplex_pixels,
+      *restrict pixels;
+
+    register IndexPacket
+      *restrict destination_indexes;
+
+    register ssize_t
+      x;
+
+    register PixelPacket
+      *restrict destination_pixels;
+
+    if (status == MagickFalse)
+      continue;
+    pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
+      source->region.width,1,source->exception);
+    if (pixels == (const PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewVirtualIndexQueue(source->view);
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      PixelSetQuantumColor(source->pixel_wands[id][x],pixels+x);
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        PixelSetBlackQuantum(source->pixel_wands[id][x],
+          GetIndexPixelComponent(indexes+x));
+    if (source_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        PixelSetIndex(source->pixel_wands[id][x],
+         GetIndexPixelComponent(indexes+x));
+    duplex_pixels=GetCacheViewVirtualPixels(duplex->view,duplex->region.x,y,
+      duplex->region.width,1,duplex->exception);
+    if (duplex_pixels == (const PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    duplex_indexes=GetCacheViewVirtualIndexQueue(duplex->view);
+    for (x=0; x < (ssize_t) duplex->region.width; x++)
+      PixelSetQuantumColor(duplex->pixel_wands[id][x],duplex_pixels+x);
+    if (duplex_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) duplex->region.width; x++)
+        PixelSetBlackQuantum(duplex->pixel_wands[id][x],
+          GetIndexPixelComponent(duplex_indexes+x));
+    if (duplex_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) duplex->region.width; x++)
+        PixelSetIndex(duplex->pixel_wands[id][x],
+          GetIndexPixelComponent(duplex_indexes+x));
+    destination_pixels=GetCacheViewAuthenticPixels(destination->view,
+      destination->region.x,y,destination->region.width,1,exception);
+    if (destination_pixels == (PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    destination_indexes=GetCacheViewAuthenticIndexQueue(destination->view);
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      PixelSetQuantumColor(destination->pixel_wands[id][x],
+        destination_pixels+x);
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        PixelSetBlackQuantum(destination->pixel_wands[id][x],
+          GetIndexPixelComponent(destination_indexes+x));
+    if (destination_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        PixelSetIndex(destination->pixel_wands[id][x],
+          GetIndexPixelComponent(destination_indexes+x));
+    if (transfer(source,duplex,destination,context) == MagickFalse)
+      status=MagickFalse;
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      PixelGetQuantumColor(destination->pixel_wands[id][x],
+        destination_pixels+x);
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        SetIndexPixelComponent(destination_indexes+x,PixelGetBlackQuantum(
+          destination->pixel_wands[id][x]));
+    sync=SyncCacheViewAuthenticPixels(destination->view,exception);
+    if (sync == MagickFalse)
+      {
+        InheritException(destination->exception,GetCacheViewException(
+          source->view));
+        status=MagickFalse;
+      }
+    if (source_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickWand_DuplexTransferPixelViewIterator)
+#endif
+        proceed=SetImageProgress(source_image,DuplexTransferPixelViewTag,
+          progress++,source->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
+  return(status);
 }
 \f
 /*
@@ -271,33 +483,58 @@ MagickExport const IndexPacket *AcquireIndexes(const Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e M e m o r y                                                 %
+%   G e t P i x e l V i e w E x c e p t i o n                                 %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireMemory() returns a pointer to a block of memory at least size bytes
-%  suitably aligned for any use.
+%  GetPixelViewException() returns the severity, reason, and description of any
+%  error that occurs when utilizing a pixel view.
 %
-%  The format of the AcquireMemory method is:
+%  The format of the GetPixelViewException method is:
 %
-%      void *AcquireMemory(const size_t size)
+%      char *GetPixelViewException(const PixelWand *pixel_view,
+%        ExceptionType *severity)
 %
 %  A description of each parameter follows:
 %
-%    o size: the size of the memory in bytes to allocate.
+%    o pixel_view: the pixel pixel_view.
+%
+%    o severity: the severity of the error is returned here.
 %
 */
-MagickExport void *AcquireMemory(const size_t size)
+WandExport char *GetPixelViewException(const PixelView *pixel_view,
+  ExceptionType *severity)
 {
-  void
-    *allocation;
-
-  assert(size != 0);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  allocation=malloc(size);
-  return(allocation);
+  char
+    *description;
+
+  assert(pixel_view != (const PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  if (pixel_view->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",pixel_view->name);
+  assert(severity != (ExceptionType *) NULL);
+  *severity=pixel_view->exception->severity;
+  description=(char *) AcquireQuantumMemory(2UL*MaxTextExtent,
+    sizeof(*description));
+  if (description == (char *) NULL)
+    ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
+      pixel_view->name);
+  *description='\0';
+  if (pixel_view->exception->reason != (char *) NULL)
+    (void) CopyMagickString(description,GetLocaleExceptionMessage(
+      pixel_view->exception->severity,pixel_view->exception->reason),
+        MaxTextExtent);
+  if (pixel_view->exception->description != (char *) NULL)
+    {
+      (void) ConcatenateMagickString(description," (",MaxTextExtent);
+      (void) ConcatenateMagickString(description,GetLocaleExceptionMessage(
+        pixel_view->exception->severity,pixel_view->exception->description),
+        MaxTextExtent);
+      (void) ConcatenateMagickString(description,")",MaxTextExtent);
+    }
+  return(description);
 }
 \f
 /*
@@ -305,41 +542,28 @@ MagickExport void *AcquireMemory(const size_t size)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e O n e C a c h e V i e w P i x e l                           %
+%   G e t P i x e l V i e w H e i g h t                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireOneCacheViewPixel() returns a single pixel at the specified (x,y)
-%  location.  The image background color is returned if an error occurs.  If
-%  you plan to modify the pixel, use GetOneCacheViewAuthenticPixel() instead.
-%
-%  Deprecated, replace with:
+%  GetPixelViewHeight() returns the pixel view height.
 %
-%    GetOneCacheViewVirtualPixel(cache_view,x,y,pixel,exception);
+%  The format of the GetPixelViewHeight method is:
 %
-%  The format of the AcquireOneCacheViewPixel method is:
-%
-%      MagickBooleanType AcquireOneCacheViewPixel(const CacheView *cache_view,
-%        const ssize_t x,const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+%      size_t GetPixelViewHeight(const PixelView *pixel_view)
 %
 %  A description of each parameter follows:
 %
-%    o cache_view: the cache view.
-%
-%    o x,y:  These values define the offset of the pixel.
-%
-%    o pixel: return a pixel at the specified (x,y) location.
-%
-%    o exception: return any errors or warnings in this structure.
+%    o pixel_view: the pixel view.
 %
 */
-MagickExport MagickBooleanType AcquireOneCacheViewPixel(
-  const CacheView *cache_view,const ssize_t x,const ssize_t y,PixelPacket *pixel,
-  ExceptionInfo *exception)
+WandExport size_t GetPixelViewHeight(const PixelView *pixel_view)
 {
-  return(GetOneCacheViewVirtualPixel(cache_view,x,y,pixel,exception));
+  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  return(pixel_view->region.height);
 }
 \f
 /*
@@ -347,50 +571,116 @@ MagickExport MagickBooleanType AcquireOneCacheViewPixel(
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e O n e C a c h e V i e w V i r t u a l P i x e l             %
+%   G e t P i x e l V i e w I t e r a t o r                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireOneCacheViewVirtualPixel() returns a single pixel at the specified
-%  (x,y) location.  The image background color is returned if an error occurs.
-%  If you plan to modify the pixel, use GetOneCacheViewAuthenticPixel() instead.
+%  GetPixelViewIterator() iterates over the pixel view in parallel and calls
+%  your get method for each scanline of the view.  The pixel region is
+%  not confined to the image canvas-- that is you can include negative offsets
+%  or widths or heights that exceed the image dimension.  Any updates to
+%  the pixels in your callback are ignored.
 %
-%  Deprecated, replace with:
+%  Use this pragma:
 %
-%    GetOneCacheViewVirtualMethodPixel(cache_view,virtual_pixel_method,
-%      x,y,pixel,exception);
+%    #pragma omp critical
 %
-%  The format of the AcquireOneCacheViewPixel method is:
+%  to define a section of code in your callback get method that must be
+%  executed by a single thread at a time.
 %
-%      MagickBooleanType AcquireOneCacheViewVirtualPixel(
-%        const CacheView *cache_view,
-%        const VirtualPixelMethod virtual_pixel_method,const ssize_t x,
-%        const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+%  The format of the GetPixelViewIterator method is:
 %
-%  A description of each parameter follows:
-%
-%    o cache_view: the cache view.
+%      MagickBooleanType GetPixelViewIterator(PixelView *source,
+%        GetPixelViewMethod get,void *context)
 %
-%    o virtual_pixel_method: the virtual pixel method.
+%  A description of each parameter follows:
 %
-%    o x,y:  These values define the offset of the pixel.
+%    o source: the source pixel view.
 %
-%    o pixel: return a pixel at the specified (x,y) location.
+%    o get: the get callback method.
 %
-%    o exception: return any errors or warnings in this structure.
+%    o context: the user defined context.
 %
 */
-MagickExport MagickBooleanType AcquireOneCacheViewVirtualPixel(
-  const CacheView *cache_view,const VirtualPixelMethod virtual_pixel_method,
-  const ssize_t x,const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+WandExport MagickBooleanType GetPixelViewIterator(PixelView *source,
+  GetPixelViewMethod get,void *context)
 {
+#define GetPixelViewTag  "PixelView/Get"
+
+  Image
+    *source_image;
+
   MagickBooleanType
     status;
 
-  status=GetOneCacheViewVirtualMethodPixel(cache_view,virtual_pixel_method,
-    x,y,pixel,exception);
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(source != (PixelView *) NULL);
+  assert(source->signature == WandSignature);
+  if (get == (GetPixelViewMethod) NULL)
+    return(MagickFalse);
+  source_image=source->wand->images;
+  status=MagickTrue;
+  progress=0;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=source->region.y; y < (ssize_t) source->region.height; y++)
+  {
+    const int
+      id = GetOpenMPThreadId();
+
+    register const IndexPacket
+      *indexes;
+
+    register const PixelPacket
+      *pixels;
+
+    register ssize_t
+      x;
+
+    if (status == MagickFalse)
+      continue;
+    pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
+      source->region.width,1,source->exception);
+    if (pixels == (const PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewVirtualIndexQueue(source->view);
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      PixelSetQuantumColor(source->pixel_wands[id][x],pixels+x);
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        PixelSetBlackQuantum(source->pixel_wands[id][x],
+          GetIndexPixelComponent(indexes+x));
+    if (source_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        PixelSetIndex(source->pixel_wands[id][x],
+          GetIndexPixelComponent(indexes+x));
+    if (get(source,context) == MagickFalse)
+      status=MagickFalse;
+    if (source_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickWand_GetPixelViewIterator)
+#endif
+        proceed=SetImageProgress(source_image,GetPixelViewTag,progress++,
+          source->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
   return(status);
 }
 \f
@@ -399,43 +689,31 @@ MagickExport MagickBooleanType AcquireOneCacheViewVirtualPixel(
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e O n e M a g i c k P i x e l                                 %
+%   G e t P i x e l V i e w P i x e l s                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireOneMagickPixel() returns a single pixel at the specified (x,y)
-%  location.  The image background color is returned if an error occurs.  If
-%  you plan to modify the pixel, use GetOnePixel() instead.
-%
-%  Deprecated, replace with:
+%  GetPixelViewPixels() returns the pixel view pixel_wands.
 %
-%    MagickPixelPacket pixel;
-%    GetOneVirtualMagickPixel(image,x,y,&pixel,exception);
+%  The format of the GetPixelViewPixels method is:
 %
-%  The format of the AcquireOneMagickPixel() method is:
-%
-%      MagickPixelPacket AcquireOneMagickPixel(const Image image,const ssize_t x,
-%        const ssize_t y,ExceptionInfo exception)
+%      PixelWand *GetPixelViewPixels(const PixelView *pixel_view)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
-%
-%    o x,y:  These values define the location of the pixel to return.
-%
-%    o exception: return any errors or warnings in this structure.
+%    o pixel_view: the pixel view.
 %
 */
-MagickExport MagickPixelPacket AcquireOneMagickPixel(const Image *image,
-  const ssize_t x,const ssize_t y,ExceptionInfo *exception)
+WandExport PixelWand **GetPixelViewPixels(const PixelView *pixel_view)
 {
-  MagickPixelPacket
-    pixel;
+  const int
+    id = GetOpenMPThreadId();
 
-  (void) GetOneVirtualMagickPixel(image,x,y,&pixel,exception);
-  return(pixel);
+  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  return(pixel_view->pixel_wands[id]);
 }
 \f
 /*
@@ -443,43 +721,28 @@ MagickExport MagickPixelPacket AcquireOneMagickPixel(const Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e O n e P i x e l                                             %
+%   G e t P i x e l V i e w W a n d                                           %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireOnePixel() returns a single pixel at the specified (x,y) location.
-%  The image background color is returned if an error occurs.  If you plan to
-%  modify the pixel, use GetOnePixel() instead.
-%
-%  Deprecated, replace with:
+%  GetPixelViewWand() returns the magick wand associated with the pixel view.
 %
-%    PixelPacket pixel;
-%    GetOneVirtualPixel(image,x,y,&pixel,exception);
+%  The format of the GetPixelViewWand method is:
 %
-%  The format of the AcquireOnePixel() method is:
-%
-%      PixelPacket AcquireOnePixel(const Image image,const ssize_t x,
-%        const ssize_t y,ExceptionInfo exception)
+%      MagickWand *GetPixelViewWand(const PixelView *pixel_view)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
-%
-%    o x,y:  These values define the location of the pixel to return.
-%
-%    o exception: return any errors or warnings in this structure.
+%    o pixel_view: the pixel view.
 %
 */
-MagickExport PixelPacket AcquireOnePixel(const Image *image,const ssize_t x,
-  const ssize_t y,ExceptionInfo *exception)
+WandExport MagickWand *GetPixelViewWand(const PixelView *pixel_view)
 {
-  PixelPacket
-    pixel;
-
-  (void) GetOneVirtualPixel(image,x,y,&pixel,exception);
-  return(pixel);
+  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  return(pixel_view->wand);
 }
 \f
 /*
@@ -487,49 +750,28 @@ MagickExport PixelPacket AcquireOnePixel(const Image *image,const ssize_t x,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e O n e V i r t u a l P i x e l                               %
+%   G e t P i x e l V i e w W i d t h                                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireOneVirtualPixel() returns a single pixel at the specified (x,y)
-%  location as defined by specified pixel method.  The image background color
-%  is returned if an error occurs.  If you plan to modify the pixel, use
-%  GetOnePixel() instead.
-%
-%  Deprecated, replace with:
+%  GetPixelViewWidth() returns the pixel view width.
 %
-%    PixelPacket pixel;
-%    GetOneVirtualMethodPixel(image,virtual_pixel_method,x,y,&pixel,exception);
+%  The format of the GetPixelViewWidth method is:
 %
-%  The format of the AcquireOneVirtualPixel() method is:
-%
-%      PixelPacket AcquireOneVirtualPixel(const Image image,
-%        const VirtualPixelMethod virtual_pixel_method,const ssize_t x,
-%        const ssize_t y,ExceptionInfo exception)
+%      size_t GetPixelViewWidth(const PixelView *pixel_view)
 %
 %  A description of each parameter follows:
 %
-%    o virtual_pixel_method: the virtual pixel method.
-%
-%    o image: the image.
-%
-%    o x,y:  These values define the location of the pixel to return.
-%
-%    o exception: return any errors or warnings in this structure.
+%    o pixel_view: the pixel view.
 %
 */
-MagickExport PixelPacket AcquireOneVirtualPixel(const Image *image,
-  const VirtualPixelMethod virtual_pixel_method,const ssize_t x,const ssize_t y,
-  ExceptionInfo *exception)
+WandExport size_t GetPixelViewWidth(const PixelView *pixel_view)
 {
-  PixelPacket
-    pixel;
-
-  (void) GetOneVirtualMethodPixel(image,virtual_pixel_method,x,y,&pixel,
-    exception);
-  return(pixel);
+  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  return(pixel_view->region.width);
 }
 \f
 /*
@@ -537,31 +779,28 @@ MagickExport PixelPacket AcquireOneVirtualPixel(const Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A c q u i r e P i x e l s                                                 %
+%   G e t P i x e l V i e w X                                                 %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquirePixels() returns the pixels associated with the last call to
-%  QueueAuthenticPixels() or GetVirtualPixels().
-%
-%  Deprecated, replace with:
-%
-%    GetVirtualPixelQueue(image);
+%  GetPixelViewX() returns the pixel view x offset.
 %
-%  The format of the AcquirePixels() method is:
+%  The format of the GetPixelViewX method is:
 %
-%      const PixelPacket *AcquirePixels(const Image image)
+%      ssize_t GetPixelViewX(const PixelView *pixel_view)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o pixel_view: the pixel view.
 %
 */
-MagickExport const PixelPacket *AcquirePixels(const Image *image)
+WandExport ssize_t GetPixelViewX(const PixelView *pixel_view)
 {
-  return(GetVirtualPixelQueue(image));
+  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  return(pixel_view->region.x);
 }
 \f
 /*
@@ -569,37 +808,28 @@ MagickExport const PixelPacket *AcquirePixels(const Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A f f i n i t y I m a g e                                                 %
+%   G e t P i x e l V i e w Y                                                 %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AffinityImage() replaces the colors of an image with the closest color from
-%  a reference image.
+%  GetPixelViewY() returns the pixel view y offset.
 %
-%  Deprecated, replace with:
+%  The format of the GetPixelViewY method is:
 %
-%    RemapImage(quantize_info,image,affinity_image);
-%
-%  The format of the AffinityImage method is:
-%
-%      MagickBooleanType AffinityImage(const QuantizeInfo *quantize_info,
-%        Image *image,const Image *affinity_image)
+%      ssize_t GetPixelViewY(const PixelView *pixel_view)
 %
 %  A description of each parameter follows:
 %
-%    o quantize_info: Specifies a pointer to an QuantizeInfo structure.
-%
-%    o image: the image.
-%
-%    o affinity_image: the reference image.
+%    o pixel_view: the pixel view.
 %
 */
-MagickExport MagickBooleanType AffinityImage(const QuantizeInfo *quantize_info,
-  Image *image,const Image *affinity_image)
+WandExport ssize_t GetPixelViewY(const PixelView *pixel_view)
 {
-  return(RemapImage(quantize_info,image,affinity_image));
+  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view->signature == WandSignature);
+  return(pixel_view->region.y);
 }
 \f
 /*
@@ -607,37 +837,37 @@ MagickExport MagickBooleanType AffinityImage(const QuantizeInfo *quantize_info,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A f f i n i t y I m a g e s                                               %
+%   I s P i x e l V i e w                                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AffinityImages() replaces the colors of a sequence of images with the
-%  closest color from a reference image.
+%  IsPixelView() returns MagickTrue if the the parameter is verified as a pixel
+%  view container.
 %
-%  Deprecated, replace with:
+%  The format of the IsPixelView method is:
 %
-%    RemapImages(quantize_info,images,affinity_image);
-%
-%  The format of the AffinityImage method is:
-%
-%      MagickBooleanType AffinityImages(const QuantizeInfo *quantize_info,
-%        Image *images,Image *affinity_image)
+%      MagickBooleanType IsPixelView(const PixelView *pixel_view)
 %
 %  A description of each parameter follows:
 %
-%    o quantize_info: Specifies a pointer to an QuantizeInfo structure.
-%
-%    o images: the image sequence.
-%
-%    o affinity_image: the reference image.
+%    o pixel_view: the pixel view.
 %
 */
-MagickExport MagickBooleanType AffinityImages(const QuantizeInfo *quantize_info,
-  Image *images,const Image *affinity_image)
+WandExport MagickBooleanType IsPixelView(const PixelView *pixel_view)
 {
-  return(RemapImages(quantize_info,images,affinity_image));
+  size_t
+    length;
+
+  if (pixel_view == (const PixelView *) NULL)
+    return(MagickFalse);
+  if (pixel_view->signature != WandSignature)
+    return(MagickFalse);
+  length=strlen(PixelViewId);
+  if (LocaleNCompare(pixel_view->name,PixelViewId,length) != 0)
+    return(MagickFalse);
+  return(MagickTrue);
 }
 \f
 /*
@@ -645,71 +875,64 @@ MagickExport MagickBooleanType AffinityImages(const QuantizeInfo *quantize_info,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A l l o c a t e I m a g e                                                 %
+%   M a g i c k C l i p P a t h I m a g e                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AllocateImage() returns a pointer to an image structure initialized to
-%  default values.
+%  MagickClipPathImage() clips along the named paths from the 8BIM profile, if
+%  present. Later operations take effect inside the path.  Id may be a number
+%  if preceded with #, to work on a numbered path, e.g., "#1" to use the first
+%  path.
 %
-%  Deprecated, replace with:
+%  The format of the MagickClipPathImage method is:
 %
-%    AcquireImage(image_info);
+%      MagickBooleanType MagickClipPathImage(MagickWand *wand,
+%        const char *pathname,const MagickBooleanType inside)
 %
-%  The format of the AllocateImage method is:
+%  A description of each parameter follows:
 %
-%      Image *AllocateImage(const ImageInfo *image_info)
+%    o wand: the magick wand.
 %
-%  A description of each parameter follows:
+%    o pathname: name of clipping path resource. If name is preceded by #, use
+%      clipping path numbered by name.
 %
-%    o image_info: Many of the image default values are set from this
-%      structure.  For example, filename, compression, depth, background color,
-%      and others.
+%    o inside: if non-zero, later operations take effect inside clipping path.
+%      Otherwise later operations take effect outside clipping path.
 %
 */
-MagickExport Image *AllocateImage(const ImageInfo *image_info)
+WandExport MagickBooleanType MagickClipPathImage(MagickWand *wand,
+  const char *pathname,const MagickBooleanType inside)
 {
-  return(AcquireImage(image_info));
+  return(MagickClipImagePath(wand,pathname,inside));
 }
-\f
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A l l o c a t e I m a g e C o l o r m a p                                 %
+%   D r a w G e t F i l l A l p h a                                           %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AllocateImageColormap() allocates an image colormap and initializes
-%  it to a linear gray colorspace.  If the image already has a colormap,
-%  it is replaced.  AllocateImageColormap() returns MagickTrue if successful,
-%  otherwise MagickFalse if there is not enough memory.
-%
-%  Deprecated, replace with:
-%
-%    AcquireImageColormap(image,colors);
+%  DrawGetFillAlpha() returns the alpha used when drawing using the fill
+%  color or fill texture.  Fully opaque is 1.0.
 %
-%  The format of the AllocateImageColormap method is:
+%  The format of the DrawGetFillAlpha method is:
 %
-%      MagickBooleanType AllocateImageColormap(Image *image,
-%        const size_t colors)
+%      double DrawGetFillAlpha(const DrawingWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
-%
-%    o colors: the number of colors in the image colormap.
+%    o wand: the drawing wand.
 %
 */
-MagickExport MagickBooleanType AllocateImageColormap(Image *image,
-  const size_t colors)
+WandExport double DrawGetFillAlpha(const DrawingWand *wand)
 {
-  return(AcquireImageColormap(image,colors));
+  return(DrawGetFillOpacity(wand));
 }
 \f
 /*
@@ -717,36 +940,25 @@ MagickExport MagickBooleanType AllocateImageColormap(Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A l l o c a t e N e x t I m a g e                                         %
+%   D r a w G e t S t r o k e A l p h a                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AllocateNextImage() initializes the next image in a sequence to
-%  default values.  The next member of image points to the newly allocated
-%  image.  If there is a memory shortage, next is assigned NULL.
-%
-%  Deprecated, replace with:
+%  DrawGetStrokeAlpha() returns the alpha of stroked object outlines.
 %
-%    AcquireNextImage(image_info,image);
+%  The format of the DrawGetStrokeAlpha method is:
 %
-%  The format of the AllocateNextImage method is:
-%
-%      void AllocateNextImage(const ImageInfo *image_info,Image *image)
+%      double DrawGetStrokeAlpha(const DrawingWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o image_info: Many of the image default values are set from this
-%      structure.  For example, filename, compression, depth, background color,
-%      and others.
-%
-%    o image: the image.
-%
+%    o wand: the drawing wand.
 */
-MagickExport void AllocateNextImage(const ImageInfo *image_info,Image *image)
+WandExport double DrawGetStrokeAlpha(const DrawingWand *wand)
 {
-  AcquireNextImage(image_info,image);
+  return(DrawGetStrokeOpacity(wand));
 }
 \f
 /*
@@ -754,42 +966,26 @@ MagickExport void AllocateNextImage(const ImageInfo *image_info,Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   A l l o c a t e S t r i n g                                               %
+%   D r a w P e e k G r a p h i c W a n d                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AllocateString() allocates memory for a string and copies the source string
-%  to that memory location (and returns it).
+%  DrawPeekGraphicWand() returns the current drawing wand.
 %
-%  The format of the AllocateString method is:
+%  The format of the PeekDrawingWand method is:
 %
-%      char *AllocateString(const char *source)
+%      DrawInfo *DrawPeekGraphicWand(const DrawingWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o source: A character string.
+%    o wand: the drawing wand.
 %
 */
-MagickExport char *AllocateString(const char *source)
+WandExport DrawInfo *DrawPeekGraphicWand(const DrawingWand *wand)
 {
-  char
-    *destination;
-
-  size_t
-    length;
-
-  assert(source != (const char *) NULL);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  length=strlen(source)+MaxTextExtent+1;
-  destination=(char *) AcquireQuantumMemory(length,sizeof(*destination));
-  if (destination == (char *) NULL)
-    ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
-  *destination='\0';
-  if (source != (char *) NULL)
-    (void) CopyMagickString(destination,source,length);
-  return(destination);
+  return(PeekDrawingWand(wand));
 }
 \f
 /*
@@ -797,36 +993,29 @@ MagickExport char *AllocateString(const char *source)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%     A v e r a g e I m a g e s                                               %
+%   D r a w P o p G r a p h i c C o n t e x t                                 %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AverageImages() takes a set of images and averages them together.  Each
-%  image in the set must have the same width and height.  AverageImages()
-%  returns a single image with each corresponding pixel component of each
-%  image averaged.   On failure, a NULL image is returned and exception
-%  describes the reason for the failure.
-%
-%  Deprecated, replace with:
-%
-%    EvaluateImages(images,MeanEvaluateOperator,exception);
+%  DrawPopGraphicContext() destroys the current drawing wand and returns to the
+%  previously pushed drawing wand. Multiple drawing wands may exist. It is an
+%  error to attempt to pop more drawing wands than have been pushed, and it is
+%  proper form to pop all drawing wands which have been pushed.
 %
-%  The format of the AverageImages method is:
+%  The format of the DrawPopGraphicContext method is:
 %
-%      Image *AverageImages(Image *images,ExceptionInfo *exception)
+%      MagickBooleanType DrawPopGraphicContext(DrawingWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image sequence.
-%
-%    o exception: return any errors or warnings in this structure.
+%    o wand: the drawing wand.
 %
 */
-MagickExport Image *AverageImages(const Image *images,ExceptionInfo *exception)
+WandExport void DrawPopGraphicContext(DrawingWand *wand)
 {
-  return(EvaluateImages(images,MeanEvaluateOperator,exception));
+  (void) PopDrawingWand(wand);
 }
 \f
 /*
@@ -834,35 +1023,29 @@ MagickExport Image *AverageImages(const Image *images,ExceptionInfo *exception)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%     C h a n n e l I m a g e                                                 %
+%   D r a w P u s h G r a p h i c C o n t e x t                               %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  Extract a channel from the image.  A channel is a particular color component
-%  of each pixel in the image.
-%
-%  Deprecated, replace with:
+%  DrawPushGraphicContext() clones the current drawing wand to create a new
+%  drawing wand.  The original drawing wand(s) may be returned to by
+%  invoking PopDrawingWand().  The drawing wands are stored on a drawing wand
+%  stack.  For every Pop there must have already been an equivalent Push.
 %
-%    SeparateImageChannel(image,channel);
+%  The format of the DrawPushGraphicContext method is:
 %
-%  The format of the ChannelImage method is:
-%
-%      unsigned int ChannelImage(Image *image,const ChannelType channel)
+%      MagickBooleanType DrawPushGraphicContext(DrawingWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
-%
-%    o channel: Identify which channel to extract: RedChannel, GreenChannel,
-%      BlueChannel, OpacityChannel, CyanChannel, MagentaChannel, YellowChannel,
-%      or BlackChannel.
+%    o wand: the drawing wand.
 %
 */
-MagickExport unsigned int ChannelImage(Image *image,const ChannelType channel)
+WandExport void DrawPushGraphicContext(DrawingWand *wand)
 {
-  return(SeparateImageChannel(image,channel));
+  (void) PushDrawingWand(wand);
 }
 \f
 /*
@@ -870,58 +1053,29 @@ MagickExport unsigned int ChannelImage(Image *image,const ChannelType channel)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%     C h a n n e l T h r e s h o l d I m a g e                               %
+%   D r a w S e t F i l l A l p h a                                           %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  ChannelThresholdImage() changes the value of individual pixels based on
-%  the intensity of each pixel channel.  The result is a high-contrast image.
+%  DrawSetFillAlpha() sets the alpha to use when drawing using the fill
+%  color or fill texture.  Fully opaque is 1.0.
 %
-%  The format of the ChannelThresholdImage method is:
+%  The format of the DrawSetFillAlpha method is:
 %
-%      unsigned int ChannelThresholdImage(Image *image,const char *level)
+%      void DrawSetFillAlpha(DrawingWand *wand,const double fill_alpha)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o wand: the drawing wand.
 %
-%    o level: define the threshold values.
+%    o fill_alpha: fill alpha
 %
 */
-MagickExport unsigned int ChannelThresholdImage(Image *image,const char *level)
+WandExport void DrawSetFillAlpha(DrawingWand *wand,const double fill_alpha)
 {
-  MagickPixelPacket
-    threshold;
-
-  GeometryInfo
-    geometry_info;
-
-  unsigned int
-    flags,
-    status;
-
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  if (level == (char *) NULL)
-    return(MagickFalse);
-  flags=ParseGeometry(level,&geometry_info);
-  threshold.red=geometry_info.rho;
-  threshold.green=geometry_info.sigma;
-  if ((flags & SigmaValue) == 0)
-    threshold.green=threshold.red;
-  threshold.blue=geometry_info.xi;
-  if ((flags & XiValue) == 0)
-    threshold.blue=threshold.red;
-  status=BilevelImageChannel(image,RedChannel,threshold.red);
-  status|=BilevelImageChannel(image,GreenChannel,threshold.green);
-  status|=BilevelImageChannel(image,BlueChannel,threshold.blue);
-  return(status);
+  DrawSetFillOpacity(wand,fill_alpha);
 }
 \f
 /*
@@ -929,39 +1083,28 @@ MagickExport unsigned int ChannelThresholdImage(Image *image,const char *level)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   C l i p I m a g e P a t h                                                 %
+%   D r a w S e t S t r o k e A l p h a                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  ClipPathImage() sets the image clip mask based any clipping path information
-%  if it exists.
-%
-%  Deprecated, replace with:
-%
-%    ClipImagePath(image,pathname,inside);
+%  DrawSetStrokeAlpha() specifies the alpha of stroked object outlines.
 %
-%  The format of the ClipImage method is:
+%  The format of the DrawSetStrokeAlpha method is:
 %
-%      MagickBooleanType ClipPathImage(Image *image,const char *pathname,
-%        const MagickBooleanType inside)
+%      void DrawSetStrokeAlpha(DrawingWand *wand,const double stroke_alpha)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o wand: the drawing wand.
 %
-%    o pathname: name of clipping path resource. If name is preceded by #, use
-%      clipping path numbered by name.
-%
-%    o inside: if non-zero, later operations take effect inside clipping path.
-%      Otherwise later operations take effect outside clipping path.
+%    o stroke_alpha: stroke alpha.  The value 1.0 is opaque.
 %
 */
-MagickExport MagickBooleanType ClipPathImage(Image *image,const char *pathname,
-  const MagickBooleanType inside)
+WandExport void DrawSetStrokeAlpha(DrawingWand *wand,const double stroke_alpha)
 {
-  return(ClipImagePath(image,pathname,inside));
+  DrawSetStrokeOpacity(wand,stroke_alpha);
 }
 \f
 /*
@@ -969,34 +1112,73 @@ MagickExport MagickBooleanType ClipPathImage(Image *image,const char *pathname,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   C l o n e I m a g e A t t r i b u t e s                                   %
+%   M a g i c k C o l o r F l o o d f i l l I m a g e                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  CloneImageAttributes() clones one or more image attributes.
+%  MagickColorFloodfillImage() changes the color value of any pixel that matches
+%  target and is an immediate neighbor.  If the method FillToBorderMethod is
+%  specified, the color value is changed for any neighbor pixel that does not
+%  match the bordercolor member of image.
+%
+%  The format of the MagickColorFloodfillImage method is:
 %
-%  Deprecated, replace with:
+%      MagickBooleanType MagickColorFloodfillImage(MagickWand *wand,
+%        const PixelWand *fill,const double fuzz,const PixelWand *bordercolor,
+%        const ssize_t x,const ssize_t y)
 %
-%    CloneImageProperties(image,clone_image);
+%  A description of each parameter follows:
 %
-%  The format of the CloneImageAttributes method is:
+%    o wand: the magick wand.
 %
-%      MagickBooleanType CloneImageAttributes(Image *image,
-%        const Image *clone_image)
+%    o fill: the floodfill color pixel wand.
 %
-%  A description of each parameter follows:
+%    o fuzz: By default target must match a particular pixel color
+%      exactly.  However, in many cases two colors may differ by a small amount.
+%      The fuzz member of image defines how much tolerance is acceptable to
+%      consider two colors as the same.  For example, set fuzz to 10 and the
+%      color red at intensities of 100 and 102 respectively are now interpreted
+%      as the same color for the purposes of the floodfill.
 %
-%    o image: the image.
+%    o bordercolor: the border color pixel wand.
 %
-%    o clone_image: the clone image.
+%    o x,y: the starting location of the operation.
 %
 */
-MagickExport MagickBooleanType CloneImageAttributes(Image *image,
-  const Image *clone_image)
+WandExport MagickBooleanType MagickColorFloodfillImage(MagickWand *wand,
+  const PixelWand *fill,const double fuzz,const PixelWand *bordercolor,
+  const ssize_t x,const ssize_t y)
 {
-  return(CloneImageProperties(image,clone_image));
+  DrawInfo
+    *draw_info;
+
+  MagickBooleanType
+    status;
+
+  PixelPacket
+    target;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  draw_info=CloneDrawInfo(wand->image_info,(DrawInfo *) NULL);
+  PixelGetQuantumColor(fill,&draw_info->fill);
+  (void) GetOneVirtualPixel(wand->images,x % wand->images->columns,
+    y % wand->images->rows,&target,wand->exception);
+  if (bordercolor != (PixelWand *) NULL)
+    PixelGetQuantumColor(bordercolor,&target);
+  wand->images->fuzz=fuzz;
+  status=ColorFloodfillImage(wand->images,draw_info,target,x,y,
+    bordercolor != (PixelWand *) NULL ? FillToBorderMethod : FloodfillMethod);
+  if (status == MagickFalse)
+    InheritException(wand->exception,&wand->images->exception);
+  draw_info=DestroyDrawInfo(draw_info);
+  return(status);
 }
 \f
 /*
@@ -1004,57 +1186,27 @@ MagickExport MagickBooleanType CloneImageAttributes(Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   C l o n e M e m o r y                                                     %
+%   M a g i c k D e s c r i b e I m a g e                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  CloneMemory() copies size bytes from memory area source to the destination.
-%  Copying between objects that overlap will take place correctly.  It returns
-%  destination.
+%  MagickDescribeImage() identifies an image by printing its attributes to the
+%  file.  Attributes include the image width, height, size, and others.
 %
-%  The format of the CloneMemory method is:
+%  The format of the MagickDescribeImage method is:
 %
-%      void *CloneMemory(void *destination,const void *source,
-%        const size_t size)
+%      const char *MagickDescribeImage(MagickWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o destination: the destination.
-%
-%    o source: the source.
-%
-%    o size: the size of the memory in bytes to allocate.
+%    o wand: the magick wand.
 %
 */
-MagickExport void *CloneMemory(void *destination,const void *source,
-  const size_t size)
+WandExport char *MagickDescribeImage(MagickWand *wand)
 {
-  register const unsigned char
-    *p;
-
-  register unsigned char
-    *q;
-
-  register ssize_t
-    i;
-
-  assert(destination != (void *) NULL);
-  assert(source != (const void *) NULL);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  p=(const unsigned char *) source;
-  q=(unsigned char *) destination;
-  if ((p <= q) || ((p+size) >= q))
-    return(CopyMagickMemory(destination,source,size));
-  /*
-    Overlap, copy backwards.
-  */
-  p+=size;
-  q+=size;
-  for (i=(ssize_t) (size-1); i >= 0; i--)
-    *--q=(*--p);
-  return(destination);
+  return(MagickIdentifyImage(wand));
 }
 \f
 /*
@@ -1062,31 +1214,39 @@ MagickExport void *CloneMemory(void *destination,const void *source,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   C l o s e C a c h e V i e w                                               %
+%   M a g i c k F l a t t e n I m a g e s                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  CloseCacheView() closes the specified view returned by a previous call to
-%  OpenCacheView().
-%
-%  Deprecated, replace with:
-%
-%    DestroyCacheView(view_info);
+%  MagickFlattenImages() merges a sequence of images.  This useful for
+%  combining Photoshop layers into a single image.
 %
-%  The format of the CloseCacheView method is:
+%  The format of the MagickFlattenImages method is:
 %
-%      CacheView *CloseCacheView(CacheView *view_info)
+%      MagickWand *MagickFlattenImages(MagickWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o view_info: the address of a structure of type CacheView.
+%    o wand: the magick wand.
 %
 */
-MagickExport CacheView *CloseCacheView(CacheView *view_info)
+WandExport MagickWand *MagickFlattenImages(MagickWand *wand)
 {
-  return(DestroyCacheView(view_info));
+  Image
+    *flatten_image;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    return((MagickWand *) NULL);
+  flatten_image=FlattenImages(wand->images,wand->exception);
+  if (flatten_image == (Image *) NULL)
+    return((MagickWand *) NULL);
+  return(CloneMagickWandFromImages(wand,flatten_image));
 }
 \f
 /*
@@ -1094,287 +1254,30 @@ MagickExport CacheView *CloseCacheView(CacheView *view_info)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   C o l o r F l o o d f i l l I m a g e                                     %
+%   M a g i c k G e t I m a g e A t t r i b u t e                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  ColorFloodfill() changes the color value of any pixel that matches
-%  target and is an immediate neighbor.  If the method FillToBorderMethod is
-%  specified, the color value is changed for any neighbor pixel that does not
-%  match the bordercolor member of image.
-%
-%  By default target must match a particular pixel color exactly.
-%  However, in many cases two colors may differ by a small amount.  The
-%  fuzz member of image defines how much tolerance is acceptable to
-%  consider two colors as the same.  For example, set fuzz to 10 and the
-%  color red at intensities of 100 and 102 respectively are now
-%  interpreted as the same color for the purposes of the floodfill.
+%  MagickGetImageAttribute() returns a value associated with the specified
+%  property.  Use MagickRelinquishMemory() to free the value when you are
+%  finished with it.
 %
-%  The format of the ColorFloodfillImage method is:
+%  The format of the MagickGetImageAttribute method is:
 %
-%      MagickBooleanType ColorFloodfillImage(Image *image,
-%        const DrawInfo *draw_info,const PixelPacket target,
-%        const ssize_t x_offset,const ssize_t y_offset,const PaintMethod method)
+%      char *MagickGetImageAttribute(MagickWand *wand,const char *property)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
-%
-%    o draw_info: the draw info.
-%
-%    o target: the RGB value of the target color.
+%    o wand: the magick wand.
 %
-%    o x,y: the starting location of the operation.
-%
-%    o method: Choose either FloodfillMethod or FillToBorderMethod.
+%    o property: the property.
 %
 */
-
-#define MaxStacksize  (1UL << 15)
-#define PushSegmentStack(up,left,right,delta) \
-{ \
-  if (s >= (segment_stack+MaxStacksize)) \
-    ThrowBinaryException(DrawError,"SegmentStackOverflow",image->filename) \
-  else \
-    { \
-      if ((((up)+(delta)) >= 0) && (((up)+(delta)) < (ssize_t) image->rows)) \
-        { \
-          s->x1=(double) (left); \
-          s->y1=(double) (up); \
-          s->x2=(double) (right); \
-          s->y2=(double) (delta); \
-          s++; \
-        } \
-    } \
-}
-
-MagickExport MagickBooleanType ColorFloodfillImage(Image *image,
-  const DrawInfo *draw_info,const PixelPacket target,const ssize_t x_offset,
-  const ssize_t y_offset,const PaintMethod method)
+WandExport char *MagickGetImageAttribute(MagickWand *wand,const char *property)
 {
-  Image
-    *floodplane_image;
-
-  MagickBooleanType
-    skip;
-
-  PixelPacket
-    fill_color;
-
-  register SegmentInfo
-    *s;
-
-  SegmentInfo
-    *segment_stack;
-
-  ssize_t
-    offset,
-    start,
-    x,
-    x1,
-    x2,
-    y;
-
-  /*
-    Check boundary conditions.
-  */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  assert(draw_info != (DrawInfo *) NULL);
-  assert(draw_info->signature == MagickSignature);
-  if ((x_offset < 0) || (x_offset >= (ssize_t) image->columns))
-    return(MagickFalse);
-  if ((y_offset < 0) || (y_offset >= (ssize_t) image->rows))
-    return(MagickFalse);
-  if (SetImageStorageClass(image,DirectClass) == MagickFalse)
-    return(MagickFalse);
-  if (image->matte == MagickFalse)
-    (void) SetImageAlphaChannel(image,OpaqueAlphaChannel);
-  floodplane_image=CloneImage(image,image->columns,image->rows,MagickTrue,
-    &image->exception);
-  if (floodplane_image == (Image *) NULL)
-    return(MagickFalse);
-  (void) SetImageAlphaChannel(floodplane_image,OpaqueAlphaChannel);
-  /*
-    Set floodfill color.
-  */
-  segment_stack=(SegmentInfo *) AcquireQuantumMemory(MaxStacksize,
-    sizeof(*segment_stack));
-  if (segment_stack == (SegmentInfo *) NULL)
-    {
-      floodplane_image=DestroyImage(floodplane_image);
-      ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
-        image->filename);
-    }
-  /*
-    Push initial segment on stack.
-  */
-  x=x_offset;
-  y=y_offset;
-  start=0;
-  s=segment_stack;
-  PushSegmentStack(y,x,x,1);
-  PushSegmentStack(y+1,x,x,-1);
-  while (s > segment_stack)
-  {
-    register const PixelPacket
-      *restrict p;
-
-    register ssize_t
-      x;
-
-    register PixelPacket
-      *restrict q;
-
-    /*
-      Pop segment off stack.
-    */
-    s--;
-    x1=(ssize_t) s->x1;
-    x2=(ssize_t) s->x2;
-    offset=(ssize_t) s->y2;
-    y=(ssize_t) s->y1+offset;
-    /*
-      Recolor neighboring pixels.
-    */
-    p=GetVirtualPixels(image,0,y,(size_t) (x1+1),1,&image->exception);
-    q=GetAuthenticPixels(floodplane_image,0,y,(size_t) (x1+1),1,
-      &image->exception);
-    if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
-      break;
-    p+=x1;
-    q+=x1;
-    for (x=x1; x >= 0; x--)
-    {
-      if (q->opacity == (Quantum) TransparentOpacity)
-        break;
-      if (method == FloodfillMethod)
-        {
-          if (IsColorSimilar(image,p,&target) == MagickFalse)
-            break;
-        }
-      else
-        if (IsColorSimilar(image,p,&target) != MagickFalse)
-          break;
-      q->opacity=(Quantum) TransparentOpacity;
-      p--;
-      q--;
-    }
-    if (SyncAuthenticPixels(floodplane_image,&image->exception) == MagickFalse)
-      break;
-    skip=x >= x1 ? MagickTrue : MagickFalse;
-    if (skip == MagickFalse)
-      {
-        start=x+1;
-        if (start < x1)
-          PushSegmentStack(y,start,x1-1,-offset);
-        x=x1+1;
-      }
-    do
-    {
-      if (skip == MagickFalse)
-        {
-          if (x < (ssize_t) image->columns)
-            {
-              p=GetVirtualPixels(image,x,y,image->columns-x,1,
-                &image->exception);
-              q=GetAuthenticPixels(floodplane_image,x,y,image->columns-x,1,
-                &image->exception);
-              if ((p == (const PixelPacket *) NULL) ||
-                  (q == (PixelPacket *) NULL))
-                break;
-              for ( ; x < (ssize_t) image->columns; x++)
-              {
-                if (q->opacity == (Quantum) TransparentOpacity)
-                  break;
-                if (method == FloodfillMethod)
-                  {
-                    if (IsColorSimilar(image,p,&target) == MagickFalse)
-                      break;
-                  }
-                else
-                  if (IsColorSimilar(image,p,&target) != MagickFalse)
-                    break;
-                q->opacity=(Quantum) TransparentOpacity;
-                p++;
-                q++;
-              }
-              if (SyncAuthenticPixels(floodplane_image,&image->exception) == MagickFalse)
-                break;
-            }
-          PushSegmentStack(y,start,x-1,offset);
-          if (x > (x2+1))
-            PushSegmentStack(y,x2+1,x-1,-offset);
-        }
-      skip=MagickFalse;
-      x++;
-      if (x <= x2)
-        {
-          p=GetVirtualPixels(image,x,y,(size_t) (x2-x+1),1,
-            &image->exception);
-          q=GetAuthenticPixels(floodplane_image,x,y,(size_t) (x2-x+1),1,
-            &image->exception);
-          if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
-            break;
-          for ( ; x <= x2; x++)
-          {
-            if (q->opacity == (Quantum) TransparentOpacity)
-              break;
-            if (method == FloodfillMethod)
-              {
-                if (IsColorSimilar(image,p,&target) != MagickFalse)
-                  break;
-              }
-            else
-              if (IsColorSimilar(image,p,&target) == MagickFalse)
-                break;
-            p++;
-            q++;
-          }
-        }
-      start=x;
-    } while (x <= x2);
-  }
-  for (y=0; y < (ssize_t) image->rows; y++)
-  {
-    register const PixelPacket
-      *restrict p;
-
-    register ssize_t
-      x;
-
-    register PixelPacket
-      *restrict q;
-
-    /*
-      Tile fill color onto floodplane.
-    */
-    p=GetVirtualPixels(floodplane_image,0,y,image->columns,1,
-      &image->exception);
-    q=GetAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-    if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
-      break;
-    for (x=0; x < (ssize_t) image->columns; x++)
-    {
-      if (GetOpacityPixelComponent(p) != OpaqueOpacity)
-        {
-          (void) GetFillColor(draw_info,x,y,&fill_color);
-          MagickCompositeOver(&fill_color,(MagickRealType) fill_color.opacity,q,
-            (MagickRealType) q->opacity,q);
-        }
-      p++;
-      q++;
-    }
-    if (SyncAuthenticPixels(image,&image->exception) == MagickFalse)
-      break;
-  }
-  segment_stack=(SegmentInfo *) RelinquishMagickMemory(segment_stack);
-  floodplane_image=DestroyImage(floodplane_image);
-  return(y == (ssize_t) image->rows ? MagickTrue : MagickFalse);
+  return(MagickGetImageProperty(wand,property));
 }
 \f
 /*
@@ -1382,33 +1285,26 @@ MagickExport MagickBooleanType ColorFloodfillImage(Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D e l e t e I m a g e A t t r i b u t e                                   %
++   M a g i c k G e t I m a g e I n d e x                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DeleteImageAttribute() deletes an attribute from the image.
+%  MagickGetImageIndex() returns the index of the current image.
 %
-%  Deprecated, replace with:
+%  The format of the MagickGetImageIndex method is:
 %
-%    DeleteImageProperty(image,key);
-%
-%  The format of the DeleteImageAttribute method is:
-%
-%      MagickBooleanType DeleteImageAttribute(Image *image,const char *key)
+%      ssize_t MagickGetImageIndex(MagickWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image info.
-%
-%    o key: the image key.
+%    o wand: the magick wand.
 %
 */
-MagickExport MagickBooleanType DeleteImageAttribute(Image *image,
-  const char *key)
+WandExport ssize_t MagickGetImageIndex(MagickWand *wand)
 {
-  return(DeleteImageProperty(image,key));
+  return(MagickGetIteratorIndex(wand));
 }
 \f
 /*
@@ -1416,42 +1312,46 @@ MagickExport MagickBooleanType DeleteImageAttribute(Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D e l e t e I m a g e L i s t                                             %
++   M a g i c k G e t I m a g e C h a n n e l E x t r e m a                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DeleteImageList() deletes an image at the specified position in the list.
+%  MagickGetImageChannelExtrema() gets the extrema for one or more image
+%  channels.
 %
-%  The format of the DeleteImageList method is:
+%  The format of the MagickGetImageChannelExtrema method is:
 %
-%      unsigned int DeleteImageList(Image *images,const ssize_t offset)
+%      MagickBooleanType MagickGetImageChannelExtrema(MagickWand *wand,
+%        const ChannelType channel,size_t *minima,size_t *maxima)
 %
 %  A description of each parameter follows:
 %
-%    o images: the image list.
+%    o wand: the magick wand.
+%
+%    o channel: the image channel(s).
 %
-%    o offset: the position within the list.
+%    o minima:  The minimum pixel value for the specified channel(s).
+%
+%    o maxima:  The maximum pixel value for the specified channel(s).
 %
 */
-MagickExport unsigned int DeleteImageList(Image *images,const ssize_t offset)
+WandExport MagickBooleanType MagickGetImageChannelExtrema(MagickWand *wand,
+  const ChannelType channel,size_t *minima,size_t *maxima)
 {
-  register ssize_t
-    i;
+  MagickBooleanType
+    status;
 
-  if (images->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  while (GetPreviousImageInList(images) != (Image *) NULL)
-    images=GetPreviousImageInList(images);
-  for (i=0; i < offset; i++)
-  {
-    if (GetNextImageInList(images) == (Image *) NULL)
-      return(MagickFalse);
-    images=GetNextImageInList(images);
-  }
-  DeleteImageFromList(&images);
-  return(MagickTrue);
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  status=GetImageChannelExtrema(wand->images,channel,minima,maxima,
+    wand->exception);
+  return(status);
 }
 \f
 /*
@@ -1459,38 +1359,42 @@ MagickExport unsigned int DeleteImageList(Image *images,const ssize_t offset)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D e l e t e M a g i c k R e g i s t r y                                   %
++   M a g i c k G e t I m a g e E x t r e m a                                 %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DeleteMagickRegistry() deletes an entry in the registry as defined by the id.
-%  It returns MagickTrue if the entry is deleted otherwise MagickFalse if no
-%  entry is found in the registry that matches the id.
+%  MagickGetImageExtrema() gets the extrema for the image.
 %
-%  Deprecated, replace with:
+%  The format of the MagickGetImageExtrema method is:
 %
-%    char key[MaxTextExtent];
-%    FormatMagickString(key,MaxTextExtent,"%ld\n",id);
-%    DeleteImageRegistry(key);
+%      MagickBooleanType MagickGetImageExtrema(MagickWand *wand,
+%        size_t *minima,size_t *maxima)
 %
-%  The format of the DeleteMagickRegistry method is:
+%  A description of each parameter follows:
 %
-%      MagickBooleanType DeleteMagickRegistry(const ssize_t id)
+%    o wand: the magick wand.
 %
-%  A description of each parameter follows:
+%    o minima:  The minimum pixel value for the specified channel(s).
 %
-%    o id: the registry id.
+%    o maxima:  The maximum pixel value for the specified channel(s).
 %
 */
-MagickExport MagickBooleanType DeleteMagickRegistry(const ssize_t id)
+WandExport MagickBooleanType MagickGetImageExtrema(MagickWand *wand,
+  size_t *minima,size_t *maxima)
 {
-  char
-    key[MaxTextExtent];
+  MagickBooleanType
+    status;
 
-  (void) FormatMagickString(key,MaxTextExtent,"%.20g\n",(double) id);
-  return(DeleteImageRegistry(key));
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  status=GetImageExtrema(wand->images,minima,maxima,wand->exception);
+  return(status);
 }
 \f
 /*
@@ -1498,22 +1402,33 @@ MagickExport MagickBooleanType DeleteMagickRegistry(const ssize_t id)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-+   D e s t r o y C o n s t i t u t e                                         %
+%   M a g i c k G e t I m a g e M a t t e                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DestroyConstitute() destroys the constitute component.
+%  MagickGetImageMatte() returns MagickTrue if the image has a matte channel
+%  otherwise MagickFalse.
+%
+%  The format of the MagickGetImageMatte method is:
+%
+%      size_t MagickGetImageMatte(MagickWand *wand)
 %
-%  The format of the DestroyConstitute method is:
+%  A description of each parameter follows:
 %
-%      DestroyConstitute(void)
+%    o wand: the magick wand.
 %
 */
-MagickExport void DestroyConstitute(void)
+WandExport MagickBooleanType MagickGetImageMatte(MagickWand *wand)
 {
-  ConstituteComponentTerminus();
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  return(wand->images->matte);
 }
 \f
 /*
@@ -1521,26 +1436,58 @@ MagickExport void DestroyConstitute(void)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-+   D e s t r o y M a g i c k R e g i s t r y                                 %
+%   M a g i c k G e t I m a g e P i x e l s                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DestroyMagickRegistry() deallocates memory associated the magick registry.
+%  MagickGetImagePixels() extracts pixel data from an image and returns it to
+%  you.  The method returns MagickTrue on success otherwise MagickFalse if an
+%  error is encountered.  The data is returned as char, short int, int, ssize_t,
+%  float, or double in the order specified by map.
+%
+%  Suppose you want to extract the first scanline of a 640x480 image as
+%  character data in red-green-blue order:
+%
+%      MagickGetImagePixels(wand,0,0,640,1,"RGB",CharPixel,pixels);
+%
+%  The format of the MagickGetImagePixels method is:
+%
+%      MagickBooleanType MagickGetImagePixels(MagickWand *wand,
+%        const ssize_t x,const ssize_t y,const size_t columns,
+%        const size_t rows,const char *map,const StorageType storage,
+%        void *pixels)
+%
+%  A description of each parameter follows:
 %
-%  Deprecated, replace with:
+%    o wand: the magick wand.
 %
-%    RegistryComponentTerminus();
+%    o x, y, columns, rows:  These values define the perimeter
+%      of a region of pixels you want to extract.
+%
+%    o map:  This string reflects the expected ordering of the pixel array.
+%      It can be any combination or order of R = red, G = green, B = blue,
+%      A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan,
+%      Y = yellow, M = magenta, K = black, I = intensity (for grayscale),
+%      P = pad.
 %
-%  The format of the DestroyMagickRegistry method is:
+%    o storage: Define the data type of the pixels.  Float and double types are
+%      expected to be normalized [0..1] otherwise [0..QuantumRange].  Choose from
+%      these types: CharPixel, DoublePixel, FloatPixel, IntegerPixel,
+%      LongPixel, QuantumPixel, or ShortPixel.
 %
-%       void DestroyMagickRegistry(void)
+%    o pixels: This array of values contain the pixel components as defined by
+%      map and type.  You must preallocate this array where the expected
+%      length varies depending on the values of width, height, map, and type.
 %
 */
-MagickExport void DestroyMagickRegistry(void)
+WandExport MagickBooleanType MagickGetImagePixels(MagickWand *wand,
+  const ssize_t x,const ssize_t y,const size_t columns,
+  const size_t rows,const char *map,const StorageType storage,
+  void *pixels)
 {
-  RegistryComponentTerminus();
+  return(MagickExportImagePixels(wand,x,y,columns,rows,map,storage,pixels));
 }
 \f
 /*
@@ -1548,38 +1495,35 @@ MagickExport void DestroyMagickRegistry(void)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D e s c r i b e I m a g e                                                 %
+%   M a g i c k G e t I m a g e S i z e                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DescribeImage() describes an image by printing its attributes to the file.
-%  Attributes include the image width, height, size, and others.
+%  MagickGetImageSize() returns the image length in bytes.
 %
-%  Deprecated, replace with:
+%  The format of the MagickGetImageSize method is:
 %
-%    IdentifyImage(image,file,verbose);
-%
-%  The format of the DescribeImage method is:
-%
-%      MagickBooleanType DescribeImage(Image *image,FILE *file,
-%        const MagickBooleanType verbose)
+%      MagickBooleanType MagickGetImageSize(MagickWand *wand,
+%        MagickSizeType *length)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o wand: the magick wand.
 %
-%    o file: the file, typically stdout.
-%
-%    o verbose: A value other than zero prints more detailed information
-%      about the image.
+%    o length: the image length in bytes.
 %
 */
-MagickExport MagickBooleanType DescribeImage(Image *image,FILE *file,
-  const MagickBooleanType verbose)
+WandExport MagickSizeType MagickGetImageSize(MagickWand *wand)
 {
-  return(IdentifyImage(image,file,verbose));
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  return(GetBlobSize(wand->images));
 }
 \f
 /*
@@ -1587,33 +1531,46 @@ MagickExport MagickBooleanType DescribeImage(Image *image,FILE *file,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D e s t r o y I m a g e A t t r i b u t e s                               %
+%   M a g i c k M a p I m a g e                                               %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DestroyImageAttributes() deallocates memory associated with the image
-%  attribute list.
+%  MagickMapImage() replaces the colors of an image with the closest color
+%  from a reference image.
 %
-%  The format of the DestroyImageAttributes method is:
+%  The format of the MagickMapImage method is:
 %
-%      DestroyImageAttributes(Image *image)
+%      MagickBooleanType MagickMapImage(MagickWand *wand,
+%        const MagickWand *map_wand,const MagickBooleanType dither)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o wand: the magick wand.
+%
+%    o map: the map wand.
+%
+%    o dither: Set this integer value to something other than zero to dither
+%      the mapped image.
 %
 */
-MagickExport void DestroyImageAttributes(Image *image)
+WandExport MagickBooleanType MagickMapImage(MagickWand *wand,
+  const MagickWand *map_wand,const MagickBooleanType dither)
 {
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  if (image->attributes != (void *) NULL)
-    image->attributes=(void *) DestroySplayTree((SplayTreeInfo *)
-      image->attributes);
+  MagickBooleanType
+    status;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if ((wand->images == (Image *) NULL) || (map_wand->images == (Image *) NULL))
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  status=MapImage(wand->images,map_wand->images,dither);
+  if (status == MagickFalse)
+    InheritException(wand->exception,&wand->images->exception);
+  return(status);
 }
 \f
 /*
@@ -1621,34 +1578,74 @@ MagickExport void DestroyImageAttributes(Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D e s t r o y I m a g e s                                                 %
+%   M a g i c k M a t t e F l o o d f i l l I m a g e                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DestroyImages() destroys an image list.
+%  MagickMatteFloodfillImage() changes the transparency value of any pixel that
+%  matches target and is an immediate neighbor.  If the method
+%  FillToBorderMethod is specified, the transparency value is changed for any
+%  neighbor pixel that does not match the bordercolor member of image.
 %
-%  Deprecated, replace with:
+%  The format of the MagickMatteFloodfillImage method is:
 %
-%    DestroyImageList(image);
+%      MagickBooleanType MagickMatteFloodfillImage(MagickWand *wand,
+%        const double alpha,const double fuzz,const PixelWand *bordercolor,
+%        const ssize_t x,const ssize_t y)
 %
-%  The format of the DestroyImages method is:
+%  A description of each parameter follows:
 %
-%      void DestroyImages(Image *image)
+%    o wand: the magick wand.
 %
-%  A description of each parameter follows:
+%    o alpha: the level of transparency: 1.0 is fully opaque and 0.0 is fully
+%      transparent.
 %
-%    o image: the image sequence.
+%    o fuzz: By default target must match a particular pixel color
+%      exactly.  However, in many cases two colors may differ by a small amount.
+%      The fuzz member of image defines how much tolerance is acceptable to
+%      consider two colors as the same.  For example, set fuzz to 10 and the
+%      color red at intensities of 100 and 102 respectively are now interpreted
+%      as the same color for the purposes of the floodfill.
+%
+%    o bordercolor: the border color pixel wand.
+%
+%    o x,y: the starting location of the operation.
 %
 */
-MagickExport void DestroyImages(Image *image)
+WandExport MagickBooleanType MagickMatteFloodfillImage(MagickWand *wand,
+  const double alpha,const double fuzz,const PixelWand *bordercolor,
+  const ssize_t x,const ssize_t y)
 {
-  if (image == (Image *) NULL)
-    return;
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.4.3");
-  image=DestroyImageList(image);
+  DrawInfo
+    *draw_info;
+
+  MagickBooleanType
+    status;
+
+  PixelPacket
+    target;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  draw_info=CloneDrawInfo(wand->image_info,(DrawInfo *) NULL);
+  (void) GetOneVirtualPixel(wand->images,x % wand->images->columns,
+    y % wand->images->rows,&target,wand->exception);
+  if (bordercolor != (PixelWand *) NULL)
+    PixelGetQuantumColor(bordercolor,&target);
+  wand->images->fuzz=fuzz;
+  status=MatteFloodfillImage(wand->images,target,ClampToQuantum(
+    (MagickRealType) QuantumRange-QuantumRange*alpha),x,y,bordercolor !=
+    (PixelWand *) NULL ? FillToBorderMethod : FloodfillMethod);
+  if (status == MagickFalse)
+    InheritException(wand->exception,&wand->images->exception);
+  draw_info=DestroyDrawInfo(draw_info);
+  return(status);
 }
 \f
 /*
@@ -1656,26 +1653,45 @@ MagickExport void DestroyImages(Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D e s t r o y M a g i c k                                                 %
+%   M a g i c k M e d i a n F i l t e r I m a g e                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DestroyMagick() destroys the ImageMagick environment.
+%  MagickMedianFilterImage() applies a digital filter that improves the quality
+%  of a noisy image.  Each pixel is replaced by the median in a set of
+%  neighboring pixels as defined by radius.
+%
+%  The format of the MagickMedianFilterImage method is:
 %
-%  Deprecated, replace with:
+%      MagickBooleanType MagickMedianFilterImage(MagickWand *wand,
+%        const double radius)
 %
-%    MagickCoreTerminus();
+%  A description of each parameter follows:
 %
-%  The format of the DestroyMagick function is:
+%    o wand: the magick wand.
 %
-%      DestroyMagick(void)
+%    o radius: the radius of the pixel neighborhood.
 %
 */
-MagickExport void DestroyMagick(void)
+WandExport MagickBooleanType MagickMedianFilterImage(MagickWand *wand,
+  const double radius)
 {
-  MagickCoreTerminus();
+  Image
+    *median_image;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  median_image=MedianFilterImage(wand->images,radius,wand->exception);
+  if (median_image == (Image *) NULL)
+    return(MagickFalse);
+  ReplaceImageInList(&wand->images,median_image);
+  return(MagickTrue);
 }
 \f
 /*
@@ -1683,70 +1699,84 @@ MagickExport void DestroyMagick(void)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D i s p a t c h I m a g e                                                 %
+%   M a g i c k M i n i m u m I m a g e s                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DispatchImage() extracts pixel data from an image and returns it to you.
-%  The method returns MagickFalse on success otherwise MagickTrue if an error is
-%  encountered.  The data is returned as char, short int, int, ssize_t, float,
-%  or double in the order specified by map.
+%  MagickMinimumImages() returns the minimum intensity of an image sequence.
 %
-%  Suppose you want to extract the first scanline of a 640x480 image as
-%  character data in red-green-blue order:
-%
-%      DispatchImage(image,0,0,640,1,"RGB",CharPixel,pixels,exception);
-%
-%  Deprecated, replace with:
+%  The format of the MagickMinimumImages method is:
 %
-%    ExportImagePixels(image,x_offset,y_offset,columns,rows,map,type,pixels,
-%      exception);
+%      MagickWand *MagickMinimumImages(MagickWand *wand)
 %
-%  The format of the DispatchImage method is:
+%  A description of each parameter follows:
 %
-%      unsigned int DispatchImage(const Image *image,const ssize_t x_offset,
-%        const ssize_t y_offset,const size_t columns,
-%        const size_t rows,const char *map,const StorageType type,
-%        void *pixels,ExceptionInfo *exception)
+%    o wand: the magick wand.
 %
-%  A description of each parameter follows:
+*/
+WandExport MagickWand *MagickMinimumImages(MagickWand *wand)
+{
+  Image
+    *minimum_image;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    return((MagickWand *) NULL);
+  minimum_image=EvaluateImages(wand->images,MinEvaluateOperator,
+    wand->exception);
+  if (minimum_image == (Image *) NULL)
+    return((MagickWand *) NULL);
+  return(CloneMagickWandFromImages(wand,minimum_image));
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   M a g i c k M o d e I m a g e                                             %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%    o image: the image.
+%  MagickModeImage() makes each pixel the 'predominate color' of the
+%  neighborhood of the specified radius.
 %
-%    o x_offset, y_offset, columns, rows:  These values define the perimeter
-%      of a region of pixels you want to extract.
+%  The format of the MagickModeImage method is:
 %
-%    o map:  This string reflects the expected ordering of the pixel array.
-%      It can be any combination or order of R = red, G = green, B = blue,
-%      A = alpha, C = cyan, Y = yellow, M = magenta, K = black, or
-%      I = intensity (for grayscale).
+%      MagickBooleanType MagickModeImage(MagickWand *wand,
+%        const double radius)
 %
-%    o type: Define the data type of the pixels.  Float and double types are
-%      normalized to [0..1] otherwise [0..QuantumRange].  Choose from these
-%      types: CharPixel, ShortPixel, IntegerPixel, LongPixel, FloatPixel, or
-%      DoublePixel.
+%  A description of each parameter follows:
 %
-%    o pixels: This array of values contain the pixel components as defined by
-%      map and type.  You must preallocate this array where the expected
-%      length varies depending on the values of width, height, map, and type.
+%    o wand: the magick wand.
 %
-%    o exception: return any errors or warnings in this structure.
+%    o radius: the radius of the pixel neighborhood.
 %
 */
-MagickExport unsigned int DispatchImage(const Image *image,const ssize_t x_offset,
-  const ssize_t y_offset,const size_t columns,const size_t rows,
-  const char *map,const StorageType type,void *pixels,ExceptionInfo *exception)
+WandExport MagickBooleanType MagickModeImage(MagickWand *wand,
+  const double radius)
 {
-  unsigned int
-    status;
+  Image
+    *mode_image;
 
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.6");
-  status=ExportImagePixels(image,x_offset,y_offset,columns,rows,map,type,pixels,
-    exception);
-  return(status);
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  mode_image=ModeImage(wand->images,radius,wand->exception);
+  if (mode_image == (Image *) NULL)
+    return(MagickFalse);
+  ReplaceImageInList(&wand->images,mode_image);
+  return(MagickTrue);
 }
 \f
 /*
@@ -1754,168 +1784,40 @@ MagickExport unsigned int DispatchImage(const Image *image,const ssize_t x_offse
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   E x t r a c t S u b i m a g e F r o m I m a g e                           %
+%   M a g i c k M o s a i c I m a g e s                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  ExtractSubimageFromImageImage() extracts a region of the image that most
-%  closely resembles the reference.
+%  MagickMosaicImages() inlays an image sequence to form a single coherent
+%  picture.  It returns a wand with each image in the sequence composited at
+%  the location defined by the page offset of the image.
 %
-%  The format of the ExtractSubimageFromImageImage method is:
+%  The format of the MagickMosaicImages method is:
 %
-%      Image *ExtractSubimageFromImage(const Image *image,
-%        const Image *reference,ExceptionInfo *exception)
+%      MagickWand *MagickMosaicImages(MagickWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
-%
-%    o reference: find an area of the image that closely resembles this image.
-%
-%    o exception: return any errors or warnings in this structure.
+%    o wand: the magick wand.
 %
 */
-
-static double GetSimilarityMetric(const Image *image,const Image *reference,
-  const ssize_t x_offset,const ssize_t y_offset,
-  const double similarity_threshold,ExceptionInfo *exception)
-{
-  CacheView
-    *image_view,
-    *reference_view;
-
-  double
-    channels,
-    normalized_similarity,
-    similarity;
-
-  ssize_t
-    y;
-
-  /*
-    Compute the similarity in pixels between two images.
-  */
-  normalized_similarity=1.0;
-  similarity=0.0;
-  channels=3;
-  if ((image->matte != MagickFalse) && (reference->matte != MagickFalse))
-    channels++;
-  if ((image->colorspace == CMYKColorspace) &&
-      (reference->colorspace == CMYKColorspace))
-    channels++;
-  image_view=AcquireCacheView(image);
-  reference_view=AcquireCacheView(reference);
-  for (y=0; y < (ssize_t) reference->rows; y++)
-  {
-    register const IndexPacket
-      *indexes,
-      *reference_indexes;
-
-    register const PixelPacket
-      *p,
-      *q;
-
-    register ssize_t
-      x;
-
-    p=GetCacheViewVirtualPixels(image_view,x_offset,y_offset+y,
-      reference->columns,1,exception);
-    q=GetCacheViewVirtualPixels(reference_view,0,y,reference->columns,1,
-      exception);
-    if ((p == (const PixelPacket *) NULL) || (q == (const PixelPacket *) NULL))
-      continue;
-    indexes=GetCacheViewVirtualIndexQueue(image_view);
-    reference_indexes=GetCacheViewVirtualIndexQueue(reference_view);
-    for (x=0; x < (ssize_t) reference->columns; x++)
-    {
-      MagickRealType
-        pixel;
-
-      pixel=QuantumScale*(GetRedPixelComponent(p)-(double)
-        GetRedPixelComponent(q));
-      similarity+=pixel*pixel;
-      pixel=QuantumScale*(GetGreenPixelComponent(p)-(double)
-        GetGreenPixelComponent(q));
-      similarity+=pixel*pixel;
-      pixel=QuantumScale*(GetBluePixelComponent(p)-(double)
-        GetBluePixelComponent(q));
-      similarity+=pixel*pixel;
-      if ((image->matte != MagickFalse) && (reference->matte != MagickFalse))
-        {
-          pixel=QuantumScale*(GetOpacityPixelComponent(p)-(double)
-            GetOpacityPixelComponent(q));
-          similarity+=pixel*pixel;
-        }
-      if ((image->colorspace == CMYKColorspace) &&
-          (reference->colorspace == CMYKColorspace))
-        {
-          pixel=QuantumScale*(GetIndexPixelComponent(indexes+x)-(double)
-            GetIndexPixelComponent(reference_indexes+x));
-          similarity+=pixel*pixel;
-        }
-      p++;
-      q++;
-    }
-    normalized_similarity=sqrt(similarity)/reference->columns/reference->rows/
-      channels;
-    if (normalized_similarity > similarity_threshold)
-      break;
-  }
-  reference_view=DestroyCacheView(reference_view);
-  image_view=DestroyCacheView(image_view);
-  return(normalized_similarity);
-}
-
-MagickExport Image *ExtractSubimageFromImage(Image *image,
-  const Image *reference,ExceptionInfo *exception)
+WandExport MagickWand *MagickMosaicImages(MagickWand *wand)
 {
-  double
-    similarity_threshold;
-
-  RectangleInfo
-    offset;
-
-  ssize_t
-    y;
-
-  /*
-    Extract reference from image.
-  */
-  if ((reference->columns > image->columns) || (reference->rows > image->rows))
-    return((Image *) NULL);
-  similarity_threshold=(double) image->columns*image->rows;
-  SetGeometry(reference,&offset);
-#if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(dynamic,4)
-#endif
-  for (y=0; y < (ssize_t) (image->rows-reference->rows); y++)
-  {
-    double
-      similarity;
-
-    register ssize_t
-      x;
+  Image
+    *mosaic_image;
 
-    for (x=0; x < (ssize_t) (image->columns-reference->columns); x++)
-    {
-      similarity=GetSimilarityMetric(image,reference,x,y,similarity_threshold,
-        exception);
-#if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_ExtractSubimageFromImage)
-#endif
-      if (similarity < similarity_threshold)
-        {
-          similarity_threshold=similarity;
-          offset.x=x;
-          offset.y=y;
-        }
-    }
-  }
-  if (similarity_threshold > (QuantumScale*reference->fuzz/100.0))
-    return((Image *) NULL);
-  return(CropImage(image,&offset,exception));
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    return((MagickWand *) NULL);
+  mosaic_image=MosaicImages(wand->images,wand->exception);
+  if (mosaic_image == (Image *) NULL)
+    return((MagickWand *) NULL);
+  return(CloneMagickWandFromImages(wand,mosaic_image));
 }
 \f
 /*
@@ -1923,32 +1825,42 @@ MagickExport Image *ExtractSubimageFromImage(Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%     F l a t t e n I m a g e                                                 %
+%   M a g i c k O p a q u e I m a g e                                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  FlattenImages() Obsolete Function: Use MergeImageLayers() instead.
+%  MagickOpaqueImage() changes any pixel that matches color with the color
+%  defined by fill.
+%
+%  The format of the MagickOpaqueImage method is:
 %
-%  Deprecated, replace with:
+%      MagickBooleanType MagickOpaqueImage(MagickWand *wand,
+%        const PixelWand *target,const PixelWand *fill,const double fuzz)
 %
-%    MergeImageLayers(image,FlattenLayer,exception);
+%  A description of each parameter follows:
 %
-%  The format of the FlattenImage method is:
+%    o wand: the magick wand.
 %
-%      Image *FlattenImage(Image *image,ExceptionInfo *exception)
+%    o channel: the channel(s).
 %
-%  A description of each parameter follows:
+%    o target: Change this target color to the fill color within the image.
 %
-%    o image: the image sequence.
+%    o fill: the fill pixel wand.
 %
-%    o exception: return any errors or warnings in this structure.
+%    o fuzz: By default target must match a particular pixel color
+%      exactly.  However, in many cases two colors may differ by a small amount.
+%      The fuzz member of image defines how much tolerance is acceptable to
+%      consider two colors as the same.  For example, set fuzz to 10 and the
+%      color red at intensities of 100 and 102 respectively are now interpreted
+%      as the same color for the purposes of the floodfill.
 %
 */
-MagickExport Image *FlattenImages(Image *image,ExceptionInfo *exception)
+WandExport MagickBooleanType MagickOpaqueImage(MagickWand *wand,
+  const PixelWand *target,const PixelWand *fill,const double fuzz)
 {
-  return(MergeImageLayers(image,FlattenLayer,exception));
+  return(MagickPaintOpaqueImage(wand,target,fill,fuzz));
 }
 \f
 /*
@@ -1956,62 +1868,52 @@ MagickExport Image *FlattenImages(Image *image,ExceptionInfo *exception)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%  F o r m a t I m a g e A t t r i b u t e                                    %
+%   M a g i c k P a i n t F l o o d f i l l I m a g e                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  FormatImageAttribute() permits formatted key/value pairs to be saved as an
-%  image attribute.
+%  MagickPaintFloodfillImage() changes the color value of any pixel that matches
+%  target and is an immediate neighbor.  If the method FillToBorderMethod is
+%  specified, the color value is changed for any neighbor pixel that does not
+%  match the bordercolor member of image.
+%
+%  The format of the MagickPaintFloodfillImage method is:
+%
+%      MagickBooleanType MagickPaintFloodfillImage(MagickWand *wand,
+%        const ChannelType channel,const PixelWand *fill,const double fuzz,
+%        const PixelWand *bordercolor,const ssize_t x,const ssize_t y)
 %
-%  The format of the FormatImageAttribute method is:
+%  A description of each parameter follows:
+%
+%    o wand: the magick wand.
 %
-%      MagickBooleanType FormatImageAttribute(Image *image,const char *key,
-%        const char *format,...)
+%    o channel: the channel(s).
 %
-%  A description of each parameter follows.
+%    o fill: the floodfill color pixel wand.
 %
-%   o  image:  The image.
+%    o fuzz: By default target must match a particular pixel color
+%      exactly.  However, in many cases two colors may differ by a small amount.
+%      The fuzz member of image defines how much tolerance is acceptable to
+%      consider two colors as the same.  For example, set fuzz to 10 and the
+%      color red at intensities of 100 and 102 respectively are now interpreted
+%      as the same color for the purposes of the floodfill.
 %
-%   o  key:  The attribute key.
+%    o bordercolor: the border color pixel wand.
 %
-%   o  format:  A string describing the format to use to write the remaining
-%      arguments.
+%    o x,y: the starting location of the operation.
 %
 */
-
-MagickExport MagickBooleanType FormatImageAttributeList(Image *image,
-  const char *key,const char *format,va_list operands)
-{
-  char
-    value[MaxTextExtent];
-
-  int
-    n;
-
-#if defined(MAGICKCORE_HAVE_VSNPRINTF)
-  n=vsnprintf(value,MaxTextExtent,format,operands);
-#else
-  n=vsprintf(value,format,operands);
-#endif
-  if (n < 0)
-    value[MaxTextExtent-1]='\0';
-  return(SetImageProperty(image,key,value));
-}
-
-MagickExport MagickBooleanType FormatImageAttribute(Image *image,
-  const char *key,const char *format,...)
+WandExport MagickBooleanType MagickPaintFloodfillImage(MagickWand *wand,
+  const ChannelType channel,const PixelWand *fill,const double fuzz,
+  const PixelWand *bordercolor,const ssize_t x,const ssize_t y)
 {
   MagickBooleanType
     status;
 
-  va_list
-    operands;
-
-  va_start(operands,format);
-  status=FormatImagePropertyList(image,key,format,operands);
-  va_end(operands);
+  status=MagickFloodfillPaintImage(wand,channel,fill,fuzz,bordercolor,x,y,
+    MagickFalse);
   return(status);
 }
 \f
@@ -2020,53 +1922,58 @@ MagickExport MagickBooleanType FormatImageAttribute(Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%  F o r m a t S t r i n g                                                    %
+%   M a g i c k P a i n t O p a q u e I m a g e                               %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  FormatString() prints formatted output of a variable argument list.
+%  MagickPaintOpaqueImage() changes any pixel that matches color with the color
+%  defined by fill.
+%
+%  The format of the MagickPaintOpaqueImage method is:
+%
+%      MagickBooleanType MagickPaintOpaqueImage(MagickWand *wand,
+%        const PixelWand *target,const PixelWand *fill,const double fuzz)
+%      MagickBooleanType MagickPaintOpaqueImageChannel(MagickWand *wand,
+%        const ChannelType channel,const PixelWand *target,
+%        const PixelWand *fill,const double fuzz)
 %
-%  The format of the FormatString method is:
+%  A description of each parameter follows:
+%
+%    o wand: the magick wand.
 %
-%      void FormatString(char *string,const char *format,...)
+%    o channel: the channel(s).
 %
-%  A description of each parameter follows.
+%    o target: Change this target color to the fill color within the image.
 %
-%   o  string:  Method FormatString returns the formatted string in this
-%      character buffer.
+%    o fill: the fill pixel wand.
 %
-%   o  format:  A string describing the format to use to write the remaining
-%      arguments.
+%    o fuzz: By default target must match a particular pixel color
+%      exactly.  However, in many cases two colors may differ by a small amount.
+%      The fuzz member of image defines how much tolerance is acceptable to
+%      consider two colors as the same.  For example, set fuzz to 10 and the
+%      color red at intensities of 100 and 102 respectively are now interpreted
+%      as the same color for the purposes of the floodfill.
 %
 */
 
-MagickExport void FormatStringList(char *string,const char *format,
-  va_list operands)
+WandExport MagickBooleanType MagickPaintOpaqueImage(MagickWand *wand,
+  const PixelWand *target,const PixelWand *fill,const double fuzz)
 {
-  int
-    n;
-
- (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-#if defined(MAGICKCORE_HAVE_VSNPRINTF)
-  n=vsnprintf(string,MaxTextExtent,format,operands);
-#else
-  n=vsprintf(string,format,operands);
-#endif
-  if (n < 0)
-    string[MaxTextExtent-1]='\0';
+  return(MagickPaintOpaqueImageChannel(wand,DefaultChannels,target,fill,fuzz));
 }
 
-MagickExport void FormatString(char *string,const char *format,...)
+WandExport MagickBooleanType MagickPaintOpaqueImageChannel(MagickWand *wand,
+  const ChannelType channel,const PixelWand *target,const PixelWand *fill,
+  const double fuzz)
 {
-  va_list
-    operands;
+  MagickBooleanType
+    status;
 
-  va_start(operands,format);
-  (void) FormatMagickStringList(string,MaxTextExtent,format,operands);
-  va_end(operands);
-  return;
+  status=MagickOpaquePaintImageChannel(wand,channel,target,fill,fuzz,
+    MagickFalse);
+  return(status);
 }
 \f
 /*
@@ -2074,56 +1981,42 @@ MagickExport void FormatString(char *string,const char *format,...)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-+   F u z z y C o l o r M a t c h                                             %
+%   M a g i c k P a i n t T r a n s p a r e n t I m a g e                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  FuzzyColorMatch() returns true if two pixels are identical in color.
+%  MagickPaintTransparentImage() changes any pixel that matches color with the
+%  color defined by fill.
 %
-%  The format of the ColorMatch method is:
+%  The format of the MagickPaintTransparentImage method is:
 %
-%      void FuzzyColorMatch(const PixelPacket *p,const PixelPacket *q,
-%        const double fuzz)
+%      MagickBooleanType MagickPaintTransparentImage(MagickWand *wand,
+%        const PixelWand *target,const double alpha,const double fuzz)
 %
 %  A description of each parameter follows:
 %
-%    o p: Pixel p.
+%    o wand: the magick wand.
 %
-%    o q: Pixel q.
+%    o target: Change this target color to specified opacity value within
+%      the image.
 %
-%    o distance:  Define how much tolerance is acceptable to consider
-%      two colors as the same.
+%    o alpha: the level of transparency: 1.0 is fully opaque and 0.0 is fully
+%      transparent.
+%
+%    o fuzz: By default target must match a particular pixel color
+%      exactly.  However, in many cases two colors may differ by a small amount.
+%      The fuzz member of image defines how much tolerance is acceptable to
+%      consider two colors as the same.  For example, set fuzz to 10 and the
+%      color red at intensities of 100 and 102 respectively are now interpreted
+%      as the same color for the purposes of the floodfill.
 %
 */
-MagickExport unsigned int FuzzyColorMatch(const PixelPacket *p,
-  const PixelPacket *q,const double fuzz)
+WandExport MagickBooleanType MagickPaintTransparentImage(MagickWand *wand,
+  const PixelWand *target,const double alpha,const double fuzz)
 {
-  MagickPixelPacket
-    pixel;
-
-  register MagickRealType
-    distance;
-
-  if ((fuzz == 0.0) && (GetRedPixelComponent(p) == GetRedPixelComponent(q)) &&
-      (GetGreenPixelComponent(p) == GetGreenPixelComponent(q)) &&
-      (GetBluePixelComponent(p) == GetBluePixelComponent(q)))
-    return(MagickTrue);
-  pixel.red=GetRedPixelComponent(p)-(MagickRealType) GetRedPixelComponent(q);
-  distance=pixel.red*pixel.red;
-  if (distance > (fuzz*fuzz))
-    return(MagickFalse);
-  pixel.green=GetGreenPixelComponent(p)-(MagickRealType)
-    GetGreenPixelComponent(q);
-  distance+=pixel.green*pixel.green;
-  if (distance > (fuzz*fuzz))
-    return(MagickFalse);
-  pixel.blue=GetBluePixelComponent(p)-(MagickRealType) GetBluePixelComponent(q);
-  distance+=pixel.blue*pixel.blue;
-  if (distance > (fuzz*fuzz))
-    return(MagickFalse);
-  return(MagickTrue);
+  return(MagickTransparentPaintImage(wand,target,alpha,fuzz,MagickFalse));
 }
 \f
 /*
@@ -2131,36 +2024,54 @@ MagickExport unsigned int FuzzyColorMatch(const PixelPacket *p,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-+   F u z z y C o l o r C o m p a r e                                         %
+%   M a g i c k R e c o l o r I m a g e                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  FuzzyColorCompare() returns MagickTrue if the distance between two colors is
-%  less than the specified distance in a linear three dimensional color space.
-%  This method is used by ColorFloodFill() and other algorithms which
-%  compare two colors.
+%  MagickRecolorImage() apply color transformation to an image. The method
+%  permits saturation changes, hue rotation, luminance to alpha, and various
+%  other effects.  Although variable-sized transformation matrices can be used,
+%  typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA
+%  (or RGBA with offsets).  The matrix is similar to those used by Adobe Flash
+%  except offsets are in column 6 rather than 5 (in support of CMYKA images)
+%  and offsets are normalized (divide Flash offset by 255).
 %
-%  The format of the FuzzyColorCompare method is:
+%  The format of the MagickRecolorImage method is:
 %
-%      void FuzzyColorCompare(const Image *image,const PixelPacket *p,
-%        const PixelPacket *q)
+%      MagickBooleanType MagickRecolorImage(MagickWand *wand,
+%        const size_t order,const double *color_matrix)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o wand: the magick wand.
 %
-%    o p: Pixel p.
+%    o order: the number of columns and rows in the color matrix.
 %
-%    o q: Pixel q.
+%    o color_matrix: An array of doubles representing the color matrix.
 %
 */
-MagickExport MagickBooleanType FuzzyColorCompare(const Image *image,
-  const PixelPacket *p,const PixelPacket *q)
+WandExport MagickBooleanType MagickRecolorImage(MagickWand *wand,
+  const size_t order,const double *color_matrix)
 {
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.2.5");
-  return(IsColorSimilar(image,p,q));
+  Image
+    *transform_image;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (color_matrix == (const double *) NULL)
+    return(MagickFalse);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  transform_image=RecolorImage(wand->images,order,color_matrix,
+    wand->exception);
+  if (transform_image == (Image *) NULL)
+    return(MagickFalse);
+  ReplaceImageInList(&wand->images,transform_image);
+  return(MagickTrue);
 }
 \f
 /*
@@ -2168,40 +2079,46 @@ MagickExport MagickBooleanType FuzzyColorCompare(const Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-+   F u z z y O p a c i t y C o m p a r e                                     %
+%     M a g i c k R e d u c e N o i s e I m a g e                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  FuzzyOpacityCompare() returns true if the distance between two opacity
-%  values is less than the specified distance in a linear color space.  This
-%  method is used by MatteFloodFill() and other algorithms which compare
-%  two opacity values.
+%  MagickReduceNoiseImage() smooths the contours of an image while still
+%  preserving edge information.  The algorithm works by replacing each pixel
+%  with its neighbor closest in value.  A neighbor is defined by radius.  Use
+%  a radius of 0 and ReduceNoise() selects a suitable radius for you.
 %
-%  Deprecated, replace with:
+%  The format of the MagickReduceNoiseImage method is:
 %
-%    IsOpacitySimilar(image,p,q);
-%
-%  The format of the FuzzyOpacityCompare method is:
-%
-%      void FuzzyOpacityCompare(const Image *image,const PixelPacket *p,
-%        const PixelPacket *q)
+%      MagickBooleanType MagickReduceNoiseImage(MagickWand *wand,
+%        const double radius)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o wand: the magick wand.
 %
-%    o p: Pixel p.
-%
-%    o q: Pixel q.
+%    o radius: the radius of the pixel neighborhood.
 %
 */
-MagickExport MagickBooleanType FuzzyOpacityCompare(const Image *image,
-  const PixelPacket *p,const PixelPacket *q)
+WandExport MagickBooleanType MagickReduceNoiseImage(MagickWand *wand,
+  const double radius)
 {
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.2.5");
-  return(IsOpacitySimilar(image,p,q));
+  Image
+    *noise_image;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  noise_image=ReduceNoiseImage(wand->images,radius,wand->exception);
+  if (noise_image == (Image *) NULL)
+    return(MagickFalse);
+  ReplaceImageInList(&wand->images,noise_image);
+  return(MagickTrue);
 }
 \f
 /*
@@ -2209,152 +2126,39 @@ MagickExport MagickBooleanType FuzzyOpacityCompare(const Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%  G e t C o n f i g u r e B l o b                                            %
+%   M a g i c k M a x i m u m I m a g e s                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetConfigureBlob() returns the specified configure file as a blob.
+%  MagickMaximumImages() returns the maximum intensity of an image sequence.
 %
-%  The format of the GetConfigureBlob method is:
+%  The format of the MagickMaximumImages method is:
 %
-%      void *GetConfigureBlob(const char *filename,ExceptionInfo *exception)
+%      MagickWand *MagickMaximumImages(MagickWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o filename: the configure file name.
-%
-%    o path: return the full path information of the configure file.
-%
-%    o length: This pointer to a size_t integer sets the initial length of the
-%      blob.  On return, it reflects the actual length of the blob.
-%
-%    o exception: return any errors or warnings in this structure.
+%    o wand: the magick wand.
 %
 */
-MagickExport void *GetConfigureBlob(const char *filename,char *path,
-  size_t *length,ExceptionInfo *exception)
+WandExport MagickWand *MagickMaximumImages(MagickWand *wand)
 {
-  void
-    *blob;
-
-  assert(filename != (const char *) NULL);
-  (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",filename);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  assert(path != (char *) NULL);
-  assert(length != (size_t *) NULL);
-  assert(exception != (ExceptionInfo *) NULL);
-  blob=(void *) NULL;
-  (void) CopyMagickString(path,filename,MaxTextExtent);
-#if defined(MAGICKCORE_INSTALLED_SUPPORT)
-#if defined(MAGICKCORE_LIBRARY_PATH)
-  if (blob == (void *) NULL)
-    {
-      /*
-        Search hard coded paths.
-      */
-      (void) FormatMagickString(path,MaxTextExtent,"%s%s",
-        MAGICKCORE_LIBRARY_PATH,filename);
-      if (IsPathAccessible(path) != MagickFalse)
-        blob=FileToBlob(path,~0,length,exception);
-    }
-#endif
-#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !(defined(MAGICKCORE_CONFIGURE_PATH) || defined(MAGICKCORE_SHARE_PATH))
-  if (blob == (void *) NULL)
-    {
-      char
-        *key_value;
-
-      /*
-        Locate file via registry key.
-      */
-      key_value=NTRegistryKeyLookup("ConfigurePath");
-      if (key_value != (char *) NULL)
-        {
-          (void) FormatMagickString(path,MaxTextExtent,"%s%s%s",key_value,
-            DirectorySeparator,filename);
-          if (IsPathAccessible(path) != MagickFalse)
-            blob=FileToBlob(path,~0,length,exception);
-        }
-    }
-#endif
-#else
-  if (blob == (void *) NULL)
-    {
-      char
-        *home;
-
-      home=GetEnvironmentValue("MAGICK_HOME");
-      if (home != (char *) NULL)
-        {
-          /*
-            Search MAGICK_HOME.
-          */
-#if !defined(MAGICKCORE_POSIX_SUPPORT)
-          (void) FormatMagickString(path,MaxTextExtent,"%s%s%s",home,
-            DirectorySeparator,filename);
-#else
-          (void) FormatMagickString(path,MaxTextExtent,"%s/lib/%s/%s",home,
-            MAGICKCORE_LIBRARY_RELATIVE_PATH,filename);
-#endif
-          if (IsPathAccessible(path) != MagickFalse)
-            blob=FileToBlob(path,~0,length,exception);
-          home=DestroyString(home);
-        }
-      home=GetEnvironmentValue("HOME");
-      if (home == (char *) NULL)
-        home=GetEnvironmentValue("USERPROFILE");
-      if (home != (char *) NULL)
-        {
-          /*
-            Search $HOME/.magick.
-          */
-          (void) FormatMagickString(path,MaxTextExtent,"%s%s.magick%s%s",home,
-            DirectorySeparator,DirectorySeparator,filename);
-          if ((IsPathAccessible(path) != MagickFalse) && (blob == (void *) NULL))
-            blob=FileToBlob(path,~0,length,exception);
-          home=DestroyString(home);
-        }
-    }
-  if ((blob == (void *) NULL) && (*GetClientPath() != '\0'))
-    {
-#if !defined(MAGICKCORE_POSIX_SUPPORT)
-      (void) FormatMagickString(path,MaxTextExtent,"%s%s%s",GetClientPath(),
-        DirectorySeparator,filename);
-#else
-      char
-        prefix[MaxTextExtent];
+  Image
+    *maximum_image;
 
-      /*
-        Search based on executable directory if directory is known.
-      */
-      (void) CopyMagickString(prefix,GetClientPath(),
-        MaxTextExtent);
-      ChopPathComponents(prefix,1);
-      (void) FormatMagickString(path,MaxTextExtent,"%s/lib/%s/%s",prefix,
-        MAGICKCORE_LIBRARY_RELATIVE_PATH,filename);
-#endif
-      if (IsPathAccessible(path) != MagickFalse)
-        blob=FileToBlob(path,~0,length,exception);
-    }
-  /*
-    Search current directory.
-  */
-  if ((blob == (void *) NULL) && (IsPathAccessible(path) != MagickFalse))
-    blob=FileToBlob(path,~0,length,exception);
-#if defined(MAGICKCORE_WINDOWS_SUPPORT)
-  /*
-    Search Windows registry.
-  */
-  if (blob == (void *) NULL)
-    blob=NTResourceToBlob(filename);
-#endif
-#endif
-  if (blob == (void *) NULL)
-    (void) ThrowMagickException(exception,GetMagickModule(),ConfigureWarning,
-      "UnableToOpenConfigureFile","`%s'",path);
-  return(blob);
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    return((MagickWand *) NULL);
+  maximum_image=EvaluateImages(wand->images,MaxEvaluateOperator,
+    wand->exception);
+  if (maximum_image == (Image *) NULL)
+    return((MagickWand *) NULL);
+  return(CloneMagickWandFromImages(wand,maximum_image));
 }
 \f
 /*
@@ -2362,75 +2166,32 @@ MagickExport void *GetConfigureBlob(const char *filename,char *path,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t C a c h e V i e w                                                   %
+%   M a g i c k S e t I m a g e A t t r i b u t e                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetCacheView() gets pixels from the in-memory or disk pixel cache as
-%  defined by the geometry parameters.   A pointer to the pixels is returned if
-%  the pixels are transferred, otherwise a NULL is returned.
-%
-%  Deprecated, replace with:
+%  MagickSetImageAttribute() associates a property with an image.
 %
-%    GetCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-%      GetCacheViewException(cache_view));
+%  The format of the MagickSetImageAttribute method is:
 %
-%  The format of the GetCacheView method is:
-%
-%      PixelPacket *GetCacheView(CacheView *cache_view,const ssize_t x,
-%        const ssize_t y,const size_t columns,const size_t rows)
+%      MagickBooleanType MagickSetImageAttribute(MagickWand *wand,
+%        const char *property,const char *value)
 %
 %  A description of each parameter follows:
 %
-%    o cache_view: the address of a structure of type CacheView.
-%
-%    o x,y,columns,rows:  These values define the perimeter of a region of
-%      pixels.
-%
-*/
-MagickExport PixelPacket *GetCacheView(CacheView *cache_view,const ssize_t x,
-  const ssize_t y,const size_t columns,const size_t rows)
-{
-  PixelPacket
-    *pixels;
-
-  pixels=GetCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-    GetCacheViewException(cache_view));
-  return(pixels);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   G e t C a c h e V i e w I n d e x e s                                     %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  GetCacheViewIndexes() returns the indexes associated with the specified
-%  view.
-%
-%  Deprecated, replace with:
-%
-%    GetCacheViewAuthenticIndexQueue(cache_view);
+%    o wand: the magick wand.
 %
-%  The format of the GetCacheViewIndexes method is:
+%    o property: the property.
 %
-%      IndexPacket *GetCacheViewIndexes(CacheView *cache_view)
-%
-%  A description of each parameter follows:
-%
-%    o cache_view: the cache view.
+%    o value: the value.
 %
 */
-MagickExport IndexPacket *GetCacheViewIndexes(CacheView *cache_view)
+WandExport MagickBooleanType MagickSetImageAttribute(MagickWand *wand,
+  const char *property,const char *value)
 {
-  return(GetCacheViewAuthenticIndexQueue(cache_view));
+  return(SetImageProperty(wand->images,property,value));
 }
 \f
 /*
@@ -2438,43 +2199,31 @@ MagickExport IndexPacket *GetCacheViewIndexes(CacheView *cache_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t C a c h e V i e w P i x e l s                                       %
+%   M a g i c k S e t I m a g e I n d e x                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetCacheViewPixels() gets pixels from the in-memory or disk pixel cache as
-%  defined by the geometry parameters.   A pointer to the pixels is returned if
-%  the pixels are transferred, otherwise a NULL is returned.
+%  MagickSetImageIndex() set the current image to the position of the list
+%  specified with the index parameter.
 %
-%  Deprecated, replace with:
+%  The format of the MagickSetImageIndex method is:
 %
-%    GetCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-%      GetCacheViewException(cache_view));
-%
-%  The format of the GetCacheViewPixels method is:
-%
-%      PixelPacket *GetCacheViewPixels(CacheView *cache_view,const ssize_t x,
-%        const ssize_t y,const size_t columns,const size_t rows)
+%      MagickBooleanType MagickSetImageIndex(MagickWand *wand,
+%        const ssize_t index)
 %
 %  A description of each parameter follows:
 %
-%    o cache_view: the cache view.
+%    o wand: the magick wand.
 %
-%    o x,y,columns,rows:  These values define the perimeter of a region of
-%      pixels.
+%    o index: the scene number.
 %
 */
-MagickExport PixelPacket *GetCacheViewPixels(CacheView *cache_view,const ssize_t x,
-  const ssize_t y,const size_t columns,const size_t rows)
+WandExport MagickBooleanType MagickSetImageIndex(MagickWand *wand,
+  const ssize_t index)
 {
-  PixelPacket
-    *pixels;
-
-  pixels=GetCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-    GetCacheViewException(cache_view));
-  return(pixels);
+  return(MagickSetIteratorIndex(wand,index));
 }
 \f
 /*
@@ -2482,110 +2231,43 @@ MagickExport PixelPacket *GetCacheViewPixels(CacheView *cache_view,const ssize_t
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t I m a g e A t t r i b u t e                                         %
++   M a g i c k S e t I m a g e O p t i o n                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetImageAttribute() searches the list of image attributes and returns
-%  a pointer to the attribute if it exists otherwise NULL.
+%  MagickSetImageOption() associates one or options with a particular image
+%  format (.e.g MagickSetImageOption(wand,"jpeg","perserve","yes").
 %
-%  The format of the GetImageAttribute method is:
+%  The format of the MagickSetImageOption method is:
 %
-%      const ImageAttribute *GetImageAttribute(const Image *image,
-%        const char *key)
+%      MagickBooleanType MagickSetImageOption(MagickWand *wand,
+%        const char *format,const char *key,const char *value)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
-%
-%    o key:  These character strings are the name of an image attribute to
-%      return.
-%
-*/
-
-static void *DestroyAttribute(void *attribute)
-{
-  register ImageAttribute
-    *p;
-
-  p=(ImageAttribute *) attribute;
-  if (p->value != (char *) NULL)
-    p->value=DestroyString(p->value);
-  return(RelinquishMagickMemory(p));
-}
-
-MagickExport const ImageAttribute *GetImageAttribute(const Image *image,
-  const char *key)
-{
-  const char
-    *value;
-
-  ImageAttribute
-    *attribute;
-
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.3.1");
-  value=GetImageProperty(image,key);
-  if (value == (const char *) NULL)
-    return((const ImageAttribute *) NULL);
-  if (image->attributes == (void *) NULL)
-    ((Image *) image)->attributes=NewSplayTree(CompareSplayTreeString,
-      RelinquishMagickMemory,DestroyAttribute);
-  else
-    {
-      const ImageAttribute
-        *attribute;
-
-      attribute=(const ImageAttribute *) GetValueFromSplayTree((SplayTreeInfo *)
-        image->attributes,key);
-      if (attribute != (const ImageAttribute *) NULL)
-        return(attribute);
-    }
-  attribute=(ImageAttribute *) AcquireMagickMemory(sizeof(*attribute));
-  if (attribute == (ImageAttribute *) NULL)
-    ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
-  (void) ResetMagickMemory(attribute,0,sizeof(*attribute));
-  attribute->key=ConstantString(key);
-  attribute->value=ConstantString(value);
-  (void) AddValueToSplayTree((SplayTreeInfo *) ((Image *) image)->attributes,
-    attribute->key,attribute);
-  return((const ImageAttribute *) attribute);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   G e t I m a g e C l i p p i n g P a t h A t t r i b u t e                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  GetImageClippingPathAttribute() searches the list of image attributes and
-%  returns a pointer to a clipping path if it exists otherwise NULL.
-%
-%  Deprecated, replace with:
+%    o wand: the magick wand.
 %
-%    GetImageAttribute(image,"8BIM:1999,2998");
+%    o format: the image format.
 %
-%  The format of the GetImageClippingPathAttribute method is:
+%    o key:  The key.
 %
-%      const ImageAttribute *GetImageClippingPathAttribute(Image *image)
-%
-%  A description of each parameter follows:
-%
-%    o attribute:  Method GetImageClippingPathAttribute returns the clipping
-%      path if it exists otherwise NULL.
-%
-%    o image: the image.
+%    o value:  The value.
 %
 */
-MagickExport const ImageAttribute *GetImageClippingPathAttribute(Image *image)
+WandExport MagickBooleanType MagickSetImageOption(MagickWand *wand,
+  const char *format,const char *key,const char *value)
 {
-  return(GetImageAttribute(image,"8BIM:1999,2998"));
+  char
+    option[MaxTextExtent];
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  (void) FormatMagickString(option,MaxTextExtent,"%s:%s=%s",format,key,value);
+  return(DefineImageOption(wand->image_info,option));
 }
 \f
 /*
@@ -2593,38 +2275,42 @@ MagickExport const ImageAttribute *GetImageClippingPathAttribute(Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t I m a g e F r o m M a g i c k R e g i s t r y                       %
+%   M a g i c k T r a n s p a r e n t I m a g e                               %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetImageFromMagickRegistry() gets an image from the registry as defined by
-%  its name.  If the image is not found, a NULL image is returned.
-%
-%  Deprecated, replace with:
-%
-%    GetImageRegistry(ImageRegistryType,name,exception);
+%  MagickTransparentImage() changes any pixel that matches color with the
+%  color defined by fill.
 %
-%  The format of the GetImageFromMagickRegistry method is:
+%  The format of the MagickTransparentImage method is:
 %
-%      Image *GetImageFromMagickRegistry(const char *name,ssize_t *id,
-%        ExceptionInfo *exception)
+%      MagickBooleanType MagickTransparentImage(MagickWand *wand,
+%        const PixelWand *target,const double alpha,const double fuzz)
 %
 %  A description of each parameter follows:
 %
-%    o name: the name of the image to retrieve from the registry.
+%    o wand: the magick wand.
 %
-%    o id: the registry id.
+%    o target: Change this target color to specified opacity value within
+%      the image.
 %
-%    o exception: return any errors or warnings in this structure.
+%    o alpha: the level of transparency: 1.0 is fully opaque and 0.0 is fully
+%      transparent.
+%
+%    o fuzz: By default target must match a particular pixel color
+%      exactly.  However, in many cases two colors may differ by a small amount.
+%      The fuzz member of image defines how much tolerance is acceptable to
+%      consider two colors as the same.  For example, set fuzz to 10 and the
+%      color red at intensities of 100 and 102 respectively are now interpreted
+%      as the same color for the purposes of the floodfill.
 %
 */
-MagickExport Image *GetImageFromMagickRegistry(const char *name,ssize_t *id,
-  ExceptionInfo *exception)
+WandExport MagickBooleanType MagickTransparentImage(MagickWand *wand,
+  const PixelWand *target,const double alpha,const double fuzz)
 {
-  *id=0L;
-  return((Image *) GetImageRegistry(ImageRegistryType,name,exception));
+  return(MagickPaintTransparentImage(wand,target,alpha,fuzz));
 }
 \f
 /*
@@ -2632,50 +2318,39 @@ MagickExport Image *GetImageFromMagickRegistry(const char *name,ssize_t *id,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t M a g i c k R e g i s t r y                                         %
+%   M a g i c k R e g i o n O f I n t e r e s t I m a g e                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetMagickRegistry() gets a blob from the registry as defined by the id.  If
-%  the blob that matches the id is not found, NULL is returned.
+%  MagickRegionOfInterestImage() extracts a region of the image and returns it
+%  as a new wand.
 %
-%  The format of the GetMagickRegistry method is:
+%  The format of the MagickRegionOfInterestImage method is:
 %
-%      const void *GetMagickRegistry(const ssize_t id,RegistryType *type,
-%        size_t *length,ExceptionInfo *exception)
+%      MagickWand *MagickRegionOfInterestImage(MagickWand *wand,
+%        const size_t width,const size_t height,const ssize_t x,
+%        const ssize_t y)
 %
 %  A description of each parameter follows:
 %
-%    o id: the registry id.
+%    o wand: the magick wand.
+%
+%    o width: the region width.
 %
-%    o type: the registry type.
+%    o height: the region height.
 %
-%    o length: the blob length in number of bytes.
+%    o x: the region x offset.
 %
-%    o exception: return any errors or warnings in this structure.
+%    o y: the region y offset.
 %
 */
-MagickExport void *GetMagickRegistry(const ssize_t id,RegistryType *type,
-  size_t *length,ExceptionInfo *exception)
+WandExport MagickWand *MagickRegionOfInterestImage(MagickWand *wand,
+  const size_t width,const size_t height,const ssize_t x,
+  const ssize_t y)
 {
-  char
-    key[MaxTextExtent];
-
-  void
-    *blob;
-
-  *type=UndefinedRegistryType;
-  *length=0;
-  (void) FormatMagickString(key,MaxTextExtent,"%.20g\n",(double) id);
-  blob=(void *) GetImageRegistry(ImageRegistryType,key,exception);
-  if (blob != (void *) NULL)
-    return(blob);
-  blob=(void *) GetImageRegistry(ImageInfoRegistryType,key,exception);
-  if (blob != (void *) NULL)
-    return(blob);
-  return((void *) GetImageRegistry(UndefinedRegistryType,key,exception));
+  return(MagickGetImageRegion(wand,width,height,x,y));
 }
 \f
 /*
@@ -2683,48 +2358,58 @@ MagickExport void *GetMagickRegistry(const ssize_t id,RegistryType *type,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t I m a g e G e o m e t r y                                           %
+%   M a g i c k S e t I m a g e P i x e l s                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetImageGeometry() returns a region as defined by the geometry string with
-%  respect to the image and its gravity.
+%  MagickSetImagePixels() accepts pixel datand stores it in the image at the
+%  location you specify.  The method returns MagickFalse on success otherwise
+%  MagickTrue if an error is encountered.  The pixel data can be either char,
+%  short int, int, ssize_t, float, or double in the order specified by map.
 %
-%  Deprecated, replace with:
+%  Suppose your want to upload the first scanline of a 640x480 image from
+%  character data in red-green-blue order:
 %
-%    if (size_to_fit != MagickFalse)
-%      ParseRegionGeometry(image,geometry,region_info,&image->exception); else
-%      ParsePageGeometry(image,geometry,region_info,&image->exception);
+%      MagickSetImagePixels(wand,0,0,640,1,"RGB",CharPixel,pixels);
 %
-%  The format of the GetImageGeometry method is:
+%  The format of the MagickSetImagePixels method is:
 %
-%      int GetImageGeometry(Image *image,const char *geometry,
-%        const unsigned int size_to_fit,RectangeInfo *region_info)
+%      MagickBooleanType MagickSetImagePixels(MagickWand *wand,
+%        const ssize_t x,const ssize_t y,const size_t columns,
+%        const size_t rows,const char *map,const StorageType storage,
+%        const void *pixels)
 %
 %  A description of each parameter follows:
 %
-%    o flags:  Method GetImageGeometry returns a bitmask that indicates
-%      which of the four values were located in the geometry string.
+%    o wand: the magick wand.
+%
+%    o x, y, columns, rows:  These values define the perimeter of a region
+%      of pixels you want to define.
 %
-%    o geometry:  The geometry (e.g. 100x100+10+10).
+%    o map:  This string reflects the expected ordering of the pixel array.
+%      It can be any combination or order of R = red, G = green, B = blue,
+%      A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan,
+%      Y = yellow, M = magenta, K = black, I = intensity (for grayscale),
+%      P = pad.
 %
-%    o size_to_fit:  A value other than 0 means to scale the region so it
-%      fits within the specified width and height.
+%    o storage: Define the data type of the pixels.  Float and double types are
+%      expected to be normalized [0..1] otherwise [0..QuantumRange].  Choose from
+%      these types: CharPixel, ShortPixel, IntegerPixel, LongPixel, FloatPixel,
+%      or DoublePixel.
 %
-%    o region_info: the region as defined by the geometry string with
-%      respect to the image and its gravity.
+%    o pixels: This array of values contain the pixel components as defined by
+%      map and type.  You must preallocate this array where the expected
+%      length varies depending on the values of width, height, map, and type.
 %
 */
-MagickExport int GetImageGeometry(Image *image,const char *geometry,
-  const unsigned int size_to_fit,RectangleInfo *region_info)
+WandExport MagickBooleanType MagickSetImagePixels(MagickWand *wand,
+  const ssize_t x,const ssize_t y,const size_t columns,
+  const size_t rows,const char *map,const StorageType storage,
+  const void *pixels)
 {
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.4");
-  if (size_to_fit != MagickFalse)
-    return((int) ParseRegionGeometry(image,geometry,region_info,&image->exception));
-  return((int) ParsePageGeometry(image,geometry,region_info,&image->exception));
+  return(MagickImportImagePixels(wand,x,y,columns,rows,map,storage,pixels));
 }
 \f
 /*
@@ -2732,44 +2417,32 @@ MagickExport int GetImageGeometry(Image *image,const char *geometry,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t I m a g e L i s t                                                   %
+%   M a g i c k W r i t e I m a g e B l o b                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetImageList() returns an image at the specified position in the list.
+%  MagickWriteImageBlob() implements direct to memory image formats.  It
+%  returns the image as a blob and its length.   Use MagickSetFormat() to
+%  set the format of the returned blob (GIF, JPEG,  PNG, etc.).
 %
-%  Deprecated, replace with:
+%  Use MagickRelinquishMemory() to free the blob when you are done with it.
 %
-%    CloneImage(GetImageFromList(images,(ssize_t) offset),0,0,MagickTrue,
-%      exception);
+%  The format of the MagickWriteImageBlob method is:
 %
-%  The format of the GetImageList method is:
-%
-%      Image *GetImageList(const Image *images,const ssize_t offset,
-%        ExceptionInfo *exception)
+%      unsigned char *MagickWriteImageBlob(MagickWand *wand,size_t *length)
 %
 %  A description of each parameter follows:
 %
-%    o images: the image list.
-%
-%    o offset: the position within the list.
+%    o wand: the magick wand.
 %
-%    o exception: return any errors or warnings in this structure.
+%    o length: the length of the blob.
 %
 */
-MagickExport Image *GetImageList(const Image *images,const ssize_t offset,
-  ExceptionInfo *exception)
+WandExport unsigned char *MagickWriteImageBlob(MagickWand *wand,size_t *length)
 {
-  Image
-    *image;
-
-  if (images->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  image=CloneImage(GetImageFromList(images,(ssize_t) offset),0,0,MagickTrue,
-    exception);
-  return(image);
+  return(MagickGetImageBlob(wand,length));
 }
 \f
 /*
@@ -2777,33 +2450,77 @@ MagickExport Image *GetImageList(const Image *images,const ssize_t offset,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t I m a g e L i s t I n d e x                                         %
+%   N e w P i x e l V i e w                                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetImageListIndex() returns the position in the list of the specified
-%  image.
-%
-%  Deprecated, replace with:
-%
-%    GetImageIndexInList(images);
+%  NewPixelView() returns a pixel view required for all other methods in the
+%  Pixel View API.
 %
-%  The format of the GetImageListIndex method is:
+%  The format of the NewPixelView method is:
 %
-%      ssize_t GetImageListIndex(const Image *images)
+%      PixelView *NewPixelView(MagickWand *wand)
 %
 %  A description of each parameter follows:
 %
-%    o images: the image list.
+%    o wand: the wand.
 %
 */
-MagickExport ssize_t GetImageListIndex(const Image *images)
+
+static PixelWand ***AcquirePixelsThreadSet(const size_t number_wands,
+  const size_t number_threads)
+{
+  PixelWand
+    ***pixel_wands;
+
+  register ssize_t
+    i;
+
+  pixel_wands=(PixelWand ***) AcquireQuantumMemory(number_threads,
+    sizeof(*pixel_wands));
+  if (pixel_wands == (PixelWand ***) NULL)
+    return((PixelWand ***) NULL);
+  (void) ResetMagickMemory(pixel_wands,0,number_threads*sizeof(*pixel_wands));
+  for (i=0; i < (ssize_t) number_threads; i++)
+  {
+    pixel_wands[i]=NewPixelWands(number_wands);
+    if (pixel_wands[i] == (PixelWand **) NULL)
+      return(DestroyPixelsThreadSet(pixel_wands,number_wands,number_threads));
+  }
+  return(pixel_wands);
+}
+
+WandExport PixelView *NewPixelView(MagickWand *wand)
 {
-  if (images->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  return(GetImageIndexInList(images));
+  PixelView
+    *pixel_view;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == MagickSignature);
+  pixel_view=(PixelView *) AcquireMagickMemory(sizeof(*pixel_view));
+  if (pixel_view == (PixelView *) NULL)
+    ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
+      GetExceptionMessage(errno));
+  (void) ResetMagickMemory(pixel_view,0,sizeof(*pixel_view));
+  pixel_view->id=AcquireWandId();
+  (void) FormatMagickString(pixel_view->name,MaxTextExtent,"%s-%.20g",
+    PixelViewId,(double) pixel_view->id);
+  pixel_view->exception=AcquireExceptionInfo();
+  pixel_view->wand=wand;
+  pixel_view->view=AcquireCacheView(pixel_view->wand->images);
+  pixel_view->region.width=wand->images->columns;
+  pixel_view->region.height=wand->images->rows;
+  pixel_view->number_threads=GetOpenMPMaximumThreads();
+  pixel_view->pixel_wands=AcquirePixelsThreadSet(pixel_view->region.width,
+    pixel_view->number_threads);
+  if (pixel_view->pixel_wands == (PixelWand ***) NULL)
+    ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
+      GetExceptionMessage(errno));
+  pixel_view->debug=IsEventLogging();
+  pixel_view->signature=WandSignature;
+  return(pixel_view);
 }
 \f
 /*
@@ -2811,32 +2528,60 @@ MagickExport ssize_t GetImageListIndex(const Image *images)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t I m a g e L i s t S i z e                                           %
+%   N e w P i x e l V i e w R e g i o n                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetImageListSize() returns the number of images in the list.
-%
-%  Deprecated, replace with:
+%  NewPixelViewRegion() returns a pixel view required for all other methods
+%  in the Pixel View API.
 %
-%    GetImageListLength(images);
+%  The format of the NewPixelViewRegion method is:
 %
-%  The format of the GetImageListSize method is:
-%
-%      size_t GetImageListSize(const Image *images)
+%      PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
+%        const ssize_t y,const size_t width,const size_t height)
 %
 %  A description of each parameter follows:
 %
-%    o images: the image list.
+%    o wand: the magick wand.
+%
+%    o x,y,columns,rows:  These values define the perimeter of a region of
+%      pixel_wands view.
 %
 */
-MagickExport size_t GetImageListSize(const Image *images)
+WandExport PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
+  const ssize_t y,const size_t width,const size_t height)
 {
-  if (images->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  return(GetImageListLength(images));
+  PixelView
+    *pixel_view;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == MagickSignature);
+  pixel_view=(PixelView *) AcquireMagickMemory(sizeof(*pixel_view));
+  if (pixel_view == (PixelView *) NULL)
+    ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
+      GetExceptionMessage(errno));
+  (void) ResetMagickMemory(pixel_view,0,sizeof(*pixel_view));
+  pixel_view->id=AcquireWandId();
+  (void) FormatMagickString(pixel_view->name,MaxTextExtent,"%s-%.20g",
+    PixelViewId,(double) pixel_view->id);
+  pixel_view->exception=AcquireExceptionInfo();
+  pixel_view->view=AcquireCacheView(pixel_view->wand->images);
+  pixel_view->wand=wand;
+  pixel_view->region.width=width;
+  pixel_view->region.height=height;
+  pixel_view->region.x=x;
+  pixel_view->region.y=y;
+  pixel_view->number_threads=GetOpenMPMaximumThreads();
+  pixel_view->pixel_wands=AcquirePixelsThreadSet(pixel_view->region.width,
+    pixel_view->number_threads);
+  if (pixel_view->pixel_wands == (PixelWand ***) NULL)
+    ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
+      GetExceptionMessage(errno));
+  pixel_view->debug=IsEventLogging();
+  pixel_view->signature=WandSignature;
+  return(pixel_view);
 }
 \f
 /*
@@ -2844,52 +2589,33 @@ MagickExport size_t GetImageListSize(const Image *images)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t I m a g e P i x e l s                                               %
+%   P i x e l G e t N e x t R o w                                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetImagePixels() obtains a pixel region for read/write access. If the
-%  region is successfully accessed, a pointer to a PixelPacket array
-%  representing the region is returned, otherwise NULL is returned.
-%
-%  The returned pointer may point to a temporary working copy of the pixels
-%  or it may point to the original pixels in memory. Performance is maximized
-%  if the selected region is part of one row, or one or more full rows, since
-%  then there is opportunity to access the pixels in-place (without a copy)
-%  if the image is in RAM, or in a memory-mapped file. The returned pointer
-%  should *never* be deallocated by the user.
-%
-%  Pixels accessed via the returned pointer represent a simple array of type
-%  PixelPacket. If the image type is CMYK or if the storage class is
-%  PseduoClass, call GetAuthenticIndexQueue() after invoking GetImagePixels()
-%  to obtain the black color component or colormap indexes (of type IndexPacket)
-%  corresponding to the region.  Once the PixelPacket (and/or IndexPacket)
-%  array has been updated, the changes must be saved back to the underlying
-%  image using SyncAuthenticPixels() or they may be lost.
-%
-%  Deprecated, replace with:
-%
-%    GetAuthenticPixels(image,x,y,columns,rows,&image->exception);
+%  PixelGetNextRow() returns the next row as an array of pixel wands from the
+%  pixel iterator.
 %
-%  The format of the GetImagePixels() method is:
+%  The format of the PixelGetNextRow method is:
 %
-%      PixelPacket *GetImagePixels(Image *image,const ssize_t x,const ssize_t y,
-%        const size_t columns,const size_t rows)
+%      PixelWand **PixelGetNextRow(PixelIterator *iterator,
+%        size_t *number_wands)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image.
+%    o iterator: the pixel iterator.
 %
-%    o x,y,columns,rows:  These values define the perimeter of a region of
-%      pixels.
+%    o number_wands: the number of pixel wands.
 %
 */
-MagickExport PixelPacket *GetImagePixels(Image *image,const ssize_t x,const ssize_t y,
-  const size_t columns,const size_t rows)
+WandExport PixelWand **PixelGetNextRow(PixelIterator *iterator)
 {
-  return(GetAuthenticPixels(image,x,y,columns,rows,&image->exception));
+  size_t
+    number_wands;
+
+  return(PixelGetNextIteratorRow(iterator,&number_wands));
 }
 \f
 /*
@@ -2897,35 +2623,31 @@ MagickExport PixelPacket *GetImagePixels(Image *image,const ssize_t x,const ssiz
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t I n d e x e s                                                       %
+%   P i x e l I t e r a t o r G e t E x c e p t i o n                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetIndexes() returns the black channel or the colormap indexes associated
-%  with the last call to QueueAuthenticPixels() or GetVirtualPixels().  NULL is
-%  returned if the black channel or colormap indexes are not available.
-%
-%  Deprecated, replace with:
+%  PixelIteratorGetException() returns the severity, reason, and description of
+%  any error that occurs when using other methods in this API.
 %
-%    GetAuthenticIndexQueue(image);
+%  The format of the PixelIteratorGetException method is:
 %
-%  The format of the GetIndexes() method is:
-%
-%      IndexPacket *GetIndexes(const Image *image)
+%      char *PixelIteratorGetException(const Pixeliterator *iterator,
+%        ExceptionType *severity)
 %
 %  A description of each parameter follows:
 %
-%    o indexes: GetIndexes() returns the indexes associated with the last
-%      call to QueueAuthenticPixels() or GetAuthenticPixels().
+%    o iterator: the pixel iterator.
 %
-%    o image: the image.
+%    o severity: the severity of the error is returned here.
 %
 */
-MagickExport IndexPacket *GetIndexes(const Image *image)
+WandExport char *PixelIteratorGetException(const PixelIterator *iterator,
+  ExceptionType *severity)
 {
-  return(GetAuthenticIndexQueue(image));
+  return(PixelGetIteratorException(iterator,severity));
 }
 \f
 /*
@@ -2933,42 +2655,132 @@ MagickExport IndexPacket *GetIndexes(const Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-+   G e t M a g i c k G e o m e t r y                                         %
+%   S e t P i x e l V i e w I t e r a t o r                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetMagickGeometry() is similar to GetGeometry() except the returned
-%  geometry is modified as determined by the meta characters:  %, !, <, >,
-%  and ~.
+%  SetPixelViewIterator() iterates over the pixel view in parallel and calls
+%  your set method for each scanline of the view.  The pixel region is
+%  confined to the image canvas-- that is no negative offsets or widths or
+%  heights that exceed the image dimension.  The pixels are initiallly
+%  undefined and any settings you make in the callback method are automagically
+%  synced back to your image.
+%
+%  Use this pragma:
 %
-%  Deprecated, replace with:
+%    #pragma omp critical
 %
-%    ParseMetaGeometry(geometry,x,y,width,height);
+%  to define a section of code in your callback set method that must be
+%  executed by a single thread at a time.
 %
-%  The format of the GetMagickGeometry method is:
+%  The format of the SetPixelViewIterator method is:
 %
-%      unsigned int GetMagickGeometry(const char *geometry,ssize_t *x,ssize_t *y,
-%        size_t *width,size_t *height)
+%      MagickBooleanType SetPixelViewIterator(PixelView *destination,
+%        SetPixelViewMethod set,void *context)
 %
 %  A description of each parameter follows:
 %
-%    o geometry:  Specifies a character string representing the geometry
-%      specification.
+%    o destination: the pixel view.
 %
-%    o x,y:  A pointer to an integer.  The x and y offset as determined by
-%      the geometry specification is returned here.
+%    o set: the set callback method.
 %
-%    o width,height:  A pointer to an unsigned integer.  The width and height
-%      as determined by the geometry specification is returned here.
+%    o context: the user defined context.
 %
 */
-MagickExport unsigned int GetMagickGeometry(const char *geometry,ssize_t *x,
-  ssize_t *y,size_t *width,size_t *height)
+WandExport MagickBooleanType SetPixelViewIterator(PixelView *destination,
+  SetPixelViewMethod set,void *context)
 {
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.3");
-  return(ParseMetaGeometry(geometry,x,y,width,height));
+#define SetPixelViewTag  "PixelView/Set"
+
+  ExceptionInfo
+    *exception;
+
+  Image
+    *destination_image;
+
+  MagickBooleanType
+    status;
+
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(destination != (PixelView *) NULL);
+  assert(destination->signature == WandSignature);
+  if (set == (SetPixelViewMethod) NULL)
+    return(MagickFalse);
+  destination_image=destination->wand->images;
+  if (SetImageStorageClass(destination_image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  status=MagickTrue;
+  progress=0;
+  exception=destination->exception;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=destination->region.y; y < (ssize_t) destination->region.height; y++)
+  {
+    const int
+      id = GetOpenMPThreadId();
+
+    MagickBooleanType
+      sync;
+
+    register IndexPacket
+      *restrict indexes;
+
+    register ssize_t
+      x;
+
+    register PixelPacket
+      *restrict pixels;
+
+    if (status == MagickFalse)
+      continue;
+    pixels=GetCacheViewAuthenticPixels(destination->view,destination->region.x,
+      y,destination->region.width,1,exception);
+    if (pixels == (PixelPacket *) NULL)
+      {
+        InheritException(destination->exception,GetCacheViewException(
+          destination->view));
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewAuthenticIndexQueue(destination->view);
+    if (set(destination,context) == MagickFalse)
+      status=MagickFalse;
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      PixelGetQuantumColor(destination->pixel_wands[id][x],pixels+x);
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        SetIndexPixelComponent(indexes+x,PixelGetBlackQuantum(
+          destination->pixel_wands[id][x]));
+    sync=SyncCacheViewAuthenticPixels(destination->view,exception);
+    if (sync == MagickFalse)
+      {
+        InheritException(destination->exception,GetCacheViewException(
+          destination->view));
+        status=MagickFalse;
+      }
+    if (destination_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickWand_SetPixelViewIterator)
+#endif
+        proceed=SetImageProgress(destination_image,SetPixelViewTag,progress++,
+          destination->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
+  return(status);
 }
 \f
 /*
@@ -2976,72 +2788,170 @@ MagickExport unsigned int GetMagickGeometry(const char *geometry,ssize_t *x,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t N e x t I m a g e                                                   %
+%   T r a n s f e r P i x e l V i e w I t e r a t o r                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetNextImage() returns the next image in a list.
+%  TransferPixelViewIterator() iterates over two pixel views in parallel and
+%  calls your transfer method for each scanline of the view.  The source pixel
+%  region is not confined to the image canvas-- that is you can include
+%  negative offsets or widths or heights that exceed the image dimension.
+%  However, the destination pixel view is confined to the image canvas-- that
+%  is no negative offsets or widths or heights that exceed the image dimension
+%  are permitted.
 %
-%  Deprecated, replace with:
+%  Use this pragma:
 %
-%    GetNextImageInList(images);
+%    #pragma omp critical
 %
-%  The format of the GetNextImage method is:
-%
-%      Image *GetNextImage(const Image *images)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image list.
-%
-*/
-MagickExport Image *GetNextImage(const Image *images)
-{
-  if (images->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  return(GetNextImageInList(images));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   G e t N e x t I m a g e A t t r i b u t e                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%  to define a section of code in your callback transfer method that must be
+%  executed by a single thread at a time.
 %
-%  GetNextImageAttribute() gets the next image attribute.
+%  The format of the TransferPixelViewIterator method is:
 %
-%  Deprecated, replace with:
+%      MagickBooleanType TransferPixelViewIterator(PixelView *source,
+%        PixelView *destination,TransferPixelViewMethod transfer,void *context)
 %
-%    const char *property;
-%    property=GetNextImageProperty(image);
-%    if (property != (const char *) NULL) 
-%      GetImageAttribute(image,property);
+%  A description of each parameter follows:
 %
-%  The format of the GetNextImageAttribute method is:
+%    o source: the source pixel view.
 %
-%      const ImageAttribute *GetNextImageAttribute(const Image *image)
+%    o destination: the destination pixel view.
 %
-%  A description of each parameter follows:
+%    o transfer: the transfer callback method.
 %
-%    o image: the image.
+%    o context: the user defined context.
 %
 */
-MagickExport const ImageAttribute *GetNextImageAttribute(const Image *image)
+WandExport MagickBooleanType TransferPixelViewIterator(PixelView *source,
+  PixelView *destination,TransferPixelViewMethod transfer,void *context)
 {
-  const char
-    *property;
+#define TransferPixelViewTag  "PixelView/Transfer"
+
+  ExceptionInfo
+    *exception;
+
+  Image
+    *destination_image,
+    *source_image;
+
+  MagickBooleanType
+    status;
+
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(source != (PixelView *) NULL);
+  assert(source->signature == WandSignature);
+  if (transfer == (TransferPixelViewMethod) NULL)
+    return(MagickFalse);
+  source_image=source->wand->images;
+  destination_image=destination->wand->images;
+  if (SetImageStorageClass(destination_image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  status=MagickTrue;
+  progress=0;
+  exception=destination->exception;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=source->region.y; y < (ssize_t) source->region.height; y++)
+  {
+    const int
+      id = GetOpenMPThreadId();
+
+    MagickBooleanType
+      sync;
 
-  property=GetNextImageProperty(image);
-  if (property == (const char *) NULL)
-    return((const ImageAttribute *) NULL);
-  return(GetImageAttribute(image,property));
+    register const IndexPacket
+      *restrict indexes;
+
+    register const PixelPacket
+      *restrict pixels;
+
+    register IndexPacket
+      *restrict destination_indexes;
+
+    register ssize_t
+      x;
+
+    register PixelPacket
+      *restrict destination_pixels;
+
+    if (status == MagickFalse)
+      continue;
+    pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
+      source->region.width,1,source->exception);
+    if (pixels == (const PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewVirtualIndexQueue(source->view);
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      PixelSetQuantumColor(source->pixel_wands[id][x],pixels+x);
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        PixelSetBlackQuantum(source->pixel_wands[id][x],
+          GetIndexPixelComponent(indexes+x));
+    if (source_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        PixelSetIndex(source->pixel_wands[id][x],
+          GetIndexPixelComponent(indexes+x));
+    destination_pixels=GetCacheViewAuthenticPixels(destination->view,
+      destination->region.x,y,destination->region.width,1,exception);
+    if (destination_pixels == (PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    destination_indexes=GetCacheViewAuthenticIndexQueue(destination->view);
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      PixelSetQuantumColor(destination->pixel_wands[id][x],pixels+x);
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        PixelSetBlackQuantum(destination->pixel_wands[id][x],
+          GetIndexPixelComponent(indexes+x));
+    if (destination_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        PixelSetIndex(destination->pixel_wands[id][x],
+          GetIndexPixelComponent(indexes+x));
+    if (transfer(source,destination,context) == MagickFalse)
+      status=MagickFalse;
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      PixelGetQuantumColor(destination->pixel_wands[id][x],
+        destination_pixels+x);
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        SetIndexPixelComponent(destination_indexes+x,PixelGetBlackQuantum(
+          destination->pixel_wands[id][x]));
+    sync=SyncCacheViewAuthenticPixels(destination->view,exception);
+    if (sync == MagickFalse)
+      {
+        InheritException(destination->exception,GetCacheViewException(
+          source->view));
+        status=MagickFalse;
+      }
+    if (source_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickWand_TransferPixelViewIterator)
+#endif
+        proceed=SetImageProgress(source_image,TransferPixelViewTag,progress++,
+          source->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
+  return(status);
 }
 \f
 /*
@@ -3049,3627 +2959,77 @@ MagickExport const ImageAttribute *GetNextImageAttribute(const Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t N u m b e r S c e n e s                                             %
+%   U p d a t e P i x e l V i e w I t e r a t o r                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetNumberScenes() returns the number of images in the list.
+%  UpdatePixelViewIterator() iterates over the pixel view in parallel and calls
+%  your update method for each scanline of the view.  The pixel region is
+%  confined to the image canvas-- that is no negative offsets or widths or
+%  heights that exceed the image dimension are permitted.  Updates to pixels
+%  in your callback are automagically synced back to the image.
+%
+%  Use this pragma:
 %
-%  Deprecated, replace with:
+%    #pragma omp critical
 %
-%    GetImageListLength(image);
+%  to define a section of code in your callback update method that must be
+%  executed by a single thread at a time.
 %
-%  The format of the GetNumberScenes method is:
+%  The format of the UpdatePixelViewIterator method is:
 %
-%      unsigned int GetNumberScenes(const Image *images)
+%      MagickBooleanType UpdatePixelViewIterator(PixelView *source,
+%        UpdatePixelViewMethod update,void *context)
 %
 %  A description of each parameter follows:
 %
-%    o images: the image list.
+%    o source: the source pixel view.
+%
+%    o update: the update callback method.
+%
+%    o context: the user defined context.
 %
 */
-MagickExport unsigned int GetNumberScenes(const Image *image)
+WandExport MagickBooleanType UpdatePixelViewIterator(PixelView *source,
+  UpdatePixelViewMethod update,void *context)
 {
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  return((unsigned int) GetImageListLength(image));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   G e t O n e P i x e l                                                     %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  GetOnePixel() returns a single pixel at the specified (x,y) location.
-%  The image background color is returned if an error occurs.
-%
-%  Deprecated, replace with:
-%
-%    GetOneAuthenticPixel(image,x,y,&pixel,&image->exception);
-%
-%  The format of the GetOnePixel() method is:
-%
-%      PixelPacket GetOnePixel(const Image image,const ssize_t x,const ssize_t y)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o x,y:  These values define the location of the pixel to return.
-%
-*/
-MagickExport PixelPacket GetOnePixel(Image *image,const ssize_t x,const ssize_t y)
-{
-  PixelPacket
-    pixel;
-
-  (void) GetOneAuthenticPixel(image,x,y,&pixel,&image->exception);
-  return(pixel);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   G e t P i x e l s                                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  GetPixels() returns the pixels associated with the last call to
-%  QueueAuthenticPixels() or GetAuthenticPixels().
-%
-%  Deprecated, replace with:
-%
-%    GetAuthenticPixelQueue(image);
-%
-%  The format of the GetPixels() method is:
-%
-%      PixelPacket *GetPixels(const Image image)
-%
-%  A description of each parameter follows:
-%
-%    o pixels: GetPixels() returns the pixels associated with the last call
-%      to QueueAuthenticPixels() or GetAuthenticPixels().
-%
-%    o image: the image.
-%
-*/
-MagickExport PixelPacket *GetPixels(const Image *image)
-{
-  return(GetAuthenticPixelQueue(image));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   G e t P r e v i o u s I m a g e                                           %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  GetPreviousImage() returns the previous image in a list.
-%
-%  Deprecated, replace with:
-%
-%    GetPreviousImageInList(images));
-%
-%  The format of the GetPreviousImage method is:
-%
-%      Image *GetPreviousImage(const Image *images)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image list.
-%
-*/
-MagickExport Image *GetPreviousImage(const Image *images)
-{
-  if (images->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  return(GetPreviousImageInList(images));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   H S L T r a n s f o r m                                                   %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  HSLTransform() converts a (hue, saturation, lightness) to a (red, green,
-%  blue) triple.
-%
-%  The format of the HSLTransformImage method is:
-%
-%      void HSLTransform(const double hue,const double saturation,
-%        const double lightness,Quantum *red,Quantum *green,Quantum *blue)
-%
-%  A description of each parameter follows:
-%
-%    o hue, saturation, lightness: A double value representing a
-%      component of the HSL color space.
-%
-%    o red, green, blue: A pointer to a pixel component of type Quantum.
-%
-*/
-
-static inline MagickRealType HueToRGB(MagickRealType m1,MagickRealType m2,
-  MagickRealType hue)
-{
-  if (hue < 0.0)
-    hue+=1.0;
-  if (hue > 1.0)
-    hue-=1.0;
-  if ((6.0*hue) < 1.0)
-    return(m1+6.0*(m2-m1)*hue);
-  if ((2.0*hue) < 1.0)
-    return(m2);
-  if ((3.0*hue) < 2.0)
-    return(m1+6.0*(m2-m1)*(2.0/3.0-hue));
-  return(m1);
-}
-
-MagickExport void HSLTransform(const double hue,const double saturation,
-  const double lightness,Quantum *red,Quantum *green,Quantum *blue)
-{
-  MagickRealType
-    b,
-    g,
-    r,
-    m1,
-    m2;
-
-  /*
-    Convert HSL to RGB colorspace.
-  */
-  assert(red != (Quantum *) NULL);
-  assert(green != (Quantum *) NULL);
-  assert(blue != (Quantum *) NULL);
-  if (lightness <= 0.5)
-    m2=lightness*(saturation+1.0);
-  else
-    m2=lightness+saturation-lightness*saturation;
-  m1=2.0*lightness-m2;
-  r=HueToRGB(m1,m2,hue+1.0/3.0);
-  g=HueToRGB(m1,m2,hue);
-  b=HueToRGB(m1,m2,hue-1.0/3.0);
-  *red=ClampToQuantum((MagickRealType) QuantumRange*r);
-  *green=ClampToQuantum((MagickRealType) QuantumRange*g);
-  *blue=ClampToQuantum((MagickRealType) QuantumRange*b);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   I d e n t i t y A f f i n e                                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  IdentityAffine() initializes the affine transform to the identity matrix.
-%
-%  The format of the IdentityAffine method is:
-%
-%      IdentityAffine(AffineMatrix *affine)
-%
-%  A description of each parameter follows:
-%
-%    o affine: A pointer the affine transform of type AffineMatrix.
-%
-*/
-MagickExport void IdentityAffine(AffineMatrix *affine)
-{
-  (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  assert(affine != (AffineMatrix *) NULL);
-  (void) ResetMagickMemory(affine,0,sizeof(AffineMatrix));
-  affine->sx=1.0;
-  affine->sy=1.0;
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   I n i t i a l i z e M a g i c k                                           %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  InitializeMagick() initializes the ImageMagick environment.
-%
-%  Deprecated, replace with:
-%
-%    MagickCoreGenesis(path,MagickFalse);
-%
-%  The format of the InitializeMagick function is:
-%
-%      InitializeMagick(const char *path)
-%
-%  A description of each parameter follows:
-%
-%    o path: the execution path of the current ImageMagick client.
-%
-*/
-MagickExport void InitializeMagick(const char *path)
-{
-  MagickCoreGenesis(path,MagickFalse);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   I n t e r p o l a t e P i x e l C o l o r                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  InterpolatePixelColor() applies bi-linear or tri-linear interpolation
-%  between a pixel and it's neighbors.
-%
-%  The format of the InterpolatePixelColor method is:
-%
-%      MagickPixelPacket InterpolatePixelColor(const Image *image,
-%        CacheView *view_info,InterpolatePixelMethod method,const double x,
-%        const double y,ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o image_view: the image cache view.
-%
-%    o type:  the type of pixel color interpolation.
-%
-%    o x,y: A double representing the current (x,y) position of the pixel.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-
-static inline double MagickMax(const double x,const double y)
-{
-  if (x > y)
-    return(x);
-  return(y);
-}
-
-static void BicubicInterpolate(const MagickPixelPacket *pixels,const double dx,
-  MagickPixelPacket *pixel)
-{
-  MagickRealType
-    dx2,
-    p,
-    q,
-    r,
-    s;
-
-  dx2=dx*dx;
-  p=(pixels[3].red-pixels[2].red)-(pixels[0].red-pixels[1].red);
-  q=(pixels[0].red-pixels[1].red)-p;
-  r=pixels[2].red-pixels[0].red;
-  s=pixels[1].red;
-  pixel->red=(dx*dx2*p)+(dx2*q)+(dx*r)+s;
-  p=(pixels[3].green-pixels[2].green)-(pixels[0].green-pixels[1].green);
-  q=(pixels[0].green-pixels[1].green)-p;
-  r=pixels[2].green-pixels[0].green;
-  s=pixels[1].green;
-  pixel->green=(dx*dx2*p)+(dx2*q)+(dx*r)+s;
-  p=(pixels[3].blue-pixels[2].blue)-(pixels[0].blue-pixels[1].blue);
-  q=(pixels[0].blue-pixels[1].blue)-p;
-  r=pixels[2].blue-pixels[0].blue;
-  s=pixels[1].blue;
-  pixel->blue=(dx*dx2*p)+(dx2*q)+(dx*r)+s;
-  p=(pixels[3].opacity-pixels[2].opacity)-(pixels[0].opacity-pixels[1].opacity);
-  q=(pixels[0].opacity-pixels[1].opacity)-p;
-  r=pixels[2].opacity-pixels[0].opacity;
-  s=pixels[1].opacity;
-  pixel->opacity=(dx*dx2*p)+(dx2*q)+(dx*r)+s;
-  if (pixel->colorspace == CMYKColorspace)
-    {
-      p=(pixels[3].index-pixels[2].index)-(pixels[0].index-pixels[1].index);
-      q=(pixels[0].index-pixels[1].index)-p;
-      r=pixels[2].index-pixels[0].index;
-      s=pixels[1].index;
-      pixel->index=(dx*dx2*p)+(dx2*q)+(dx*r)+s;
-    }
-}
-
-static inline MagickRealType CubicWeightingFunction(const MagickRealType x)
-{
-  MagickRealType
-    alpha,
-    gamma;
-
-  alpha=MagickMax(x+2.0,0.0);
-  gamma=1.0*alpha*alpha*alpha;
-  alpha=MagickMax(x+1.0,0.0);
-  gamma-=4.0*alpha*alpha*alpha;
-  alpha=MagickMax(x+0.0,0.0);
-  gamma+=6.0*alpha*alpha*alpha;
-  alpha=MagickMax(x-1.0,0.0);
-  gamma-=4.0*alpha*alpha*alpha;
-  return(gamma/6.0);
-}
-
-static inline double MeshInterpolate(const PointInfo *delta,const double p,
-  const double x,const double y)
-{
-  return(delta->x*x+delta->y*y+(1.0-delta->x-delta->y)*p);
-}
-
-static inline ssize_t NearestNeighbor(MagickRealType x)
-{
-  if (x >= 0.0)
-    return((ssize_t) (x+0.5));
-  return((ssize_t) (x-0.5));
-}
-
-MagickExport MagickPixelPacket InterpolatePixelColor(const Image *image,
-  CacheView *image_view,const InterpolatePixelMethod method,const double x,
-  const double y,ExceptionInfo *exception)
-{
-  MagickPixelPacket
-    pixel;
-
-  register const IndexPacket
-    *indexes;
-
-  register const PixelPacket
-    *p;
-
-  register ssize_t
-    i;
-
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  assert(image_view != (CacheView *) NULL);
-  GetMagickPixelPacket(image,&pixel);
-  switch (method)
-  {
-    case AverageInterpolatePixel:
-    {
-      MagickPixelPacket
-        pixels[16];
-
-      MagickRealType
-        alpha[16],
-        gamma;
-
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x)-1,(ssize_t)
-        floor(y)-1,4,4,exception);
-      if (p == (const PixelPacket *) NULL)
-        break;
-      indexes=GetCacheViewVirtualIndexQueue(image_view);
-      for (i=0; i < 16L; i++)
-      {
-        GetMagickPixelPacket(image,pixels+i);
-        SetMagickPixelPacket(image,p,indexes+i,pixels+i);
-        alpha[i]=1.0;
-        if (image->matte != MagickFalse)
-          {
-            alpha[i]=QuantumScale*((MagickRealType) GetAlphaPixelComponent(p));
-            pixels[i].red*=alpha[i];
-            pixels[i].green*=alpha[i];
-            pixels[i].blue*=alpha[i];
-            if (image->colorspace == CMYKColorspace)
-              pixels[i].index*=alpha[i];
-          }
-        gamma=alpha[i];
-        gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
-        pixel.red+=gamma*0.0625*pixels[i].red;
-        pixel.green+=gamma*0.0625*pixels[i].green;
-        pixel.blue+=gamma*0.0625*pixels[i].blue;
-        pixel.opacity+=0.0625*pixels[i].opacity;
-        if (image->colorspace == CMYKColorspace)
-          pixel.index+=gamma*0.0625*pixels[i].index;
-        p++;
-      }
-      break;
-    }
-    case BicubicInterpolatePixel:
-    {
-      MagickPixelPacket
-        pixels[16],
-        u[4];
-
-      MagickRealType
-        alpha[16];
-
-      PointInfo
-        delta;
-
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x)-1,(ssize_t)
-        floor(y)-1,4,4,exception);
-      if (p == (const PixelPacket *) NULL)
-        break;
-      indexes=GetCacheViewVirtualIndexQueue(image_view);
-      for (i=0; i < 16L; i++)
-      {
-        GetMagickPixelPacket(image,pixels+i);
-        SetMagickPixelPacket(image,p,indexes+i,pixels+i);
-        alpha[i]=1.0;
-        if (image->matte != MagickFalse)
-          {
-            alpha[i]=QuantumScale*((MagickRealType) GetAlphaPixelComponent(p));
-            pixels[i].red*=alpha[i];
-            pixels[i].green*=alpha[i];
-            pixels[i].blue*=alpha[i];
-            if (image->colorspace == CMYKColorspace)
-              pixels[i].index*=alpha[i];
-          }
-        p++;
-      }
-      delta.x=x-floor(x);
-      for (i=0; i < 4L; i++)
-        BicubicInterpolate(pixels+4*i,delta.x,u+i);
-      delta.y=y-floor(y);
-      BicubicInterpolate(u,delta.y,&pixel);
-      break;
-    }
-    case BilinearInterpolatePixel:
-    default:
-    {
-      MagickPixelPacket
-        pixels[16];
-
-      MagickRealType
-        alpha[16],
-        gamma;
-
-      PointInfo
-        delta;
-
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x),(ssize_t)
-        floor(y),2,2,exception);
-      if (p == (const PixelPacket *) NULL)
-        break;
-      indexes=GetCacheViewVirtualIndexQueue(image_view);
-      for (i=0; i < 4L; i++)
-      {
-        GetMagickPixelPacket(image,pixels+i);
-        SetMagickPixelPacket(image,p,indexes+i,pixels+i);
-        alpha[i]=1.0;
-        if (image->matte != MagickFalse)
-          {
-            alpha[i]=QuantumScale*((MagickRealType) GetAlphaPixelComponent(p));
-            pixels[i].red*=alpha[i];
-            pixels[i].green*=alpha[i];
-            pixels[i].blue*=alpha[i];
-            if (image->colorspace == CMYKColorspace)
-              pixels[i].index*=alpha[i];
-          }
-        p++;
-      }
-      delta.x=x-floor(x);
-      delta.y=y-floor(y);
-      gamma=(((1.0-delta.y)*((1.0-delta.x)*alpha[0]+delta.x*alpha[1])+delta.y*
-        ((1.0-delta.x)*alpha[2]+delta.x*alpha[3])));
-      gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
-      pixel.red=gamma*((1.0-delta.y)*((1.0-delta.x)*pixels[0].red+delta.x*
-        pixels[1].red)+delta.y*((1.0-delta.x)*pixels[2].red+delta.x*
-        pixels[3].red));
-      pixel.green=gamma*((1.0-delta.y)*((1.0-delta.x)*pixels[0].green+delta.x*
-        pixels[1].green)+delta.y*((1.0-delta.x)*pixels[2].green+
-        delta.x*pixels[3].green));
-      pixel.blue=gamma*((1.0-delta.y)*((1.0-delta.x)*pixels[0].blue+delta.x*
-        pixels[1].blue)+delta.y*((1.0-delta.x)*pixels[2].blue+delta.x*
-        pixels[3].blue));
-      pixel.opacity=((1.0-delta.y)*((1.0-delta.x)*pixels[0].opacity+delta.x*
-        pixels[1].opacity)+delta.y*((1.0-delta.x)*pixels[2].opacity+delta.x*
-        pixels[3].opacity));
-      if (image->colorspace == CMYKColorspace)
-        pixel.index=gamma*((1.0-delta.y)*((1.0-delta.x)*pixels[0].index+delta.x*
-          pixels[1].index)+delta.y*((1.0-delta.x)*pixels[2].index+delta.x*
-          pixels[3].index));
-      break;
-    }
-    case FilterInterpolatePixel:
-    {
-      Image
-        *excerpt_image,
-        *filter_image;
-
-      MagickPixelPacket
-        pixels[1];
-
-      RectangleInfo
-        geometry;
-
-      geometry.width=4L;
-      geometry.height=4L;
-      geometry.x=(ssize_t) floor(x)-1L;
-      geometry.y=(ssize_t) floor(y)-1L;
-      excerpt_image=ExcerptImage(image,&geometry,exception);
-      if (excerpt_image == (Image *) NULL)
-        break;
-      filter_image=ResizeImage(excerpt_image,1,1,image->filter,image->blur,
-        exception);
-      excerpt_image=DestroyImage(excerpt_image);
-      if (filter_image == (Image *) NULL)
-        break;
-      p=GetVirtualPixels(filter_image,0,0,1,1,exception);
-      if (p == (const PixelPacket *) NULL)
-        {
-          filter_image=DestroyImage(filter_image);
-          break;
-        }
-      indexes=GetVirtualIndexQueue(filter_image);
-      GetMagickPixelPacket(image,pixels);
-      SetMagickPixelPacket(image,p,indexes,&pixel);
-      filter_image=DestroyImage(filter_image);
-      break;
-    }
-    case IntegerInterpolatePixel:
-    {
-      MagickPixelPacket
-        pixels[1];
-
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x),(ssize_t)
-        floor(y),1,1,exception);
-      if (p == (const PixelPacket *) NULL)
-        break;
-      indexes=GetCacheViewVirtualIndexQueue(image_view);
-      GetMagickPixelPacket(image,pixels);
-      SetMagickPixelPacket(image,p,indexes,&pixel);
-      break;
-    }
-    case MeshInterpolatePixel:
-    {
-      MagickPixelPacket
-        pixels[4];
-
-      MagickRealType
-        alpha[4],
-        gamma;
-
-      PointInfo
-        delta,
-        luminance;
-
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x),(ssize_t)
-        floor(y),2,2,exception);
-      if (p == (const PixelPacket *) NULL)
-        break;
-      indexes=GetCacheViewVirtualIndexQueue(image_view);
-      for (i=0; i < 4L; i++)
-      {
-        GetMagickPixelPacket(image,pixels+i);
-        SetMagickPixelPacket(image,p,indexes+i,pixels+i);
-        alpha[i]=1.0;
-        if (image->matte != MagickFalse)
-          {
-            alpha[i]=QuantumScale*((MagickRealType) GetAlphaPixelComponent(p));
-            pixels[i].red*=alpha[i];
-            pixels[i].green*=alpha[i];
-            pixels[i].blue*=alpha[i];
-            if (image->colorspace == CMYKColorspace)
-              pixels[i].index*=alpha[i];
-          }
-        p++;
-      }
-      delta.x=x-floor(x);
-      delta.y=y-floor(y);
-      luminance.x=MagickPixelLuminance(pixels+0)-MagickPixelLuminance(pixels+3);
-      luminance.y=MagickPixelLuminance(pixels+1)-MagickPixelLuminance(pixels+2);
-      if (fabs(luminance.x) < fabs(luminance.y))
-        {
-          /*
-            Diagonal 0-3 NW-SE.
-          */
-          if (delta.x <= delta.y)
-            {
-              /*
-                Bottom-left triangle  (pixel:2, diagonal: 0-3).
-              */
-              delta.y=1.0-delta.y;
-              gamma=MeshInterpolate(&delta,alpha[2],alpha[3],alpha[0]);
-              gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
-              pixel.red=gamma*MeshInterpolate(&delta,pixels[2].red,
-                pixels[3].red,pixels[0].red);
-              pixel.green=gamma*MeshInterpolate(&delta,pixels[2].green,
-                pixels[3].green,pixels[0].green);
-              pixel.blue=gamma*MeshInterpolate(&delta,pixels[2].blue,
-                pixels[3].blue,pixels[0].blue);
-              pixel.opacity=gamma*MeshInterpolate(&delta,pixels[2].opacity,
-                pixels[3].opacity,pixels[0].opacity);
-              if (image->colorspace == CMYKColorspace)
-                pixel.index=gamma*MeshInterpolate(&delta,pixels[2].index,
-                  pixels[3].index,pixels[0].index);
-            }
-          else
-            {
-              /*
-                Top-right triangle (pixel:1, diagonal: 0-3).
-              */
-              delta.x=1.0-delta.x;
-              gamma=MeshInterpolate(&delta,alpha[1],alpha[0],alpha[3]);
-              gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
-              pixel.red=gamma*MeshInterpolate(&delta,pixels[1].red,
-                pixels[0].red,pixels[3].red);
-              pixel.green=gamma*MeshInterpolate(&delta,pixels[1].green,
-                pixels[0].green,pixels[3].green);
-              pixel.blue=gamma*MeshInterpolate(&delta,pixels[1].blue,
-                pixels[0].blue,pixels[3].blue);
-              pixel.opacity=gamma*MeshInterpolate(&delta,pixels[1].opacity,
-                pixels[0].opacity,pixels[3].opacity);
-              if (image->colorspace == CMYKColorspace)
-                pixel.index=gamma*MeshInterpolate(&delta,pixels[1].index,
-                  pixels[0].index,pixels[3].index);
-            }
-        }
-      else
-        {
-          /*
-            Diagonal 1-2 NE-SW.
-          */
-          if (delta.x <= (1.0-delta.y))
-            {
-              /*
-                Top-left triangle (pixel 0, diagonal: 1-2).
-              */
-              gamma=MeshInterpolate(&delta,alpha[0],alpha[1],alpha[2]);
-              gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
-              pixel.red=gamma*MeshInterpolate(&delta,pixels[0].red,
-                pixels[1].red,pixels[2].red);
-              pixel.green=gamma*MeshInterpolate(&delta,pixels[0].green,
-                pixels[1].green,pixels[2].green);
-              pixel.blue=gamma*MeshInterpolate(&delta,pixels[0].blue,
-                pixels[1].blue,pixels[2].blue);
-              pixel.opacity=gamma*MeshInterpolate(&delta,pixels[0].opacity,
-                pixels[1].opacity,pixels[2].opacity);
-              if (image->colorspace == CMYKColorspace)
-                pixel.index=gamma*MeshInterpolate(&delta,pixels[0].index,
-                  pixels[1].index,pixels[2].index);
-            }
-          else
-            {
-              /*
-                Bottom-right triangle (pixel: 3, diagonal: 1-2).
-              */
-              delta.x=1.0-delta.x;
-              delta.y=1.0-delta.y;
-              gamma=MeshInterpolate(&delta,alpha[3],alpha[2],alpha[1]);
-              gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
-              pixel.red=gamma*MeshInterpolate(&delta,pixels[3].red,
-                pixels[2].red,pixels[1].red);
-              pixel.green=gamma*MeshInterpolate(&delta,pixels[3].green,
-                pixels[2].green,pixels[1].green);
-              pixel.blue=gamma*MeshInterpolate(&delta,pixels[3].blue,
-                pixels[2].blue,pixels[1].blue);
-              pixel.opacity=gamma*MeshInterpolate(&delta,pixels[3].opacity,
-                pixels[2].opacity,pixels[1].opacity);
-              if (image->colorspace == CMYKColorspace)
-                pixel.index=gamma*MeshInterpolate(&delta,pixels[3].index,
-                  pixels[2].index,pixels[1].index);
-            }
-        }
-      break;
-    }
-    case NearestNeighborInterpolatePixel:
-    {
-      MagickPixelPacket
-        pixels[1];
-
-      p=GetCacheViewVirtualPixels(image_view,NearestNeighbor(x),
-        NearestNeighbor(y),1,1,exception);
-      if (p == (const PixelPacket *) NULL)
-        break;
-      indexes=GetCacheViewVirtualIndexQueue(image_view);
-      GetMagickPixelPacket(image,pixels);
-      SetMagickPixelPacket(image,p,indexes,&pixel);
-      break;
-    }
-    case SplineInterpolatePixel:
-    {
-      MagickPixelPacket
-        pixels[16];
-
-      MagickRealType
-        alpha[16],
-        dx,
-        dy,
-        gamma;
-
-      PointInfo
-        delta;
-
-      ssize_t
-        j,
-        n;
-
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x)-1,(ssize_t)
-        floor(y)-1,4,4,exception);
-      if (p == (const PixelPacket *) NULL)
-        break;
-      indexes=GetCacheViewVirtualIndexQueue(image_view);
-      n=0;
-      delta.x=x-floor(x);
-      delta.y=y-floor(y);
-      for (i=(-1); i < 3L; i++)
-      {
-        dy=CubicWeightingFunction((MagickRealType) i-delta.y);
-        for (j=(-1); j < 3L; j++)
-        {
-          GetMagickPixelPacket(image,pixels+n);
-          SetMagickPixelPacket(image,p,indexes+n,pixels+n);
-          alpha[n]=1.0;
-          if (image->matte != MagickFalse)
-            {
-              alpha[n]=QuantumScale*((MagickRealType)
-                GetAlphaPixelComponent(p));
-              pixels[n].red*=alpha[n];
-              pixels[n].green*=alpha[n];
-              pixels[n].blue*=alpha[n];
-              if (image->colorspace == CMYKColorspace)
-                pixels[n].index*=alpha[n];
-            }
-          dx=CubicWeightingFunction(delta.x-(MagickRealType) j);
-          gamma=alpha[n];
-          gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
-          pixel.red+=gamma*dx*dy*pixels[n].red;
-          pixel.green+=gamma*dx*dy*pixels[n].green;
-          pixel.blue+=gamma*dx*dy*pixels[n].blue;
-          if (image->matte != MagickFalse)
-            pixel.opacity+=dx*dy*pixels[n].opacity;
-          if (image->colorspace == CMYKColorspace)
-            pixel.index+=gamma*dx*dy*pixels[n].index;
-          n++;
-          p++;
-        }
-      }
-      break;
-    }
-  }
-  return(pixel);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   I n t e r p r e t I m a g e A t t r i b u t e s                           %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  InterpretImageAttributes() replaces any embedded formatting characters with
-%  the appropriate image attribute and returns the translated text.
-%
-%  Deprecated, replace with:
-%
-%    InterpretImageProperties(image_info,image,embed_text);
-%
-%  The format of the InterpretImageAttributes method is:
-%
-%      char *InterpretImageAttributes(const ImageInfo *image_info,Image *image,
-%        const char *embed_text)
-%
-%  A description of each parameter follows:
-%
-%    o image_info: the image info.
-%
-%    o image: the image.
-%
-%    o embed_text: the address of a character string containing the embedded
-%      formatting characters.
-%
-*/
-MagickExport char *InterpretImageAttributes(const ImageInfo *image_info,
-  Image *image,const char *embed_text)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.3.1");
-  return(InterpretImageProperties(image_info,image,embed_text));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-+     I s S u b i m a g e                                                     %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  IsSubimage() returns MagickTrue if the geometry is a valid subimage
-%  specification (e.g. [1], [1-9], [1,7,4]).
-%
-%  The format of the IsSubimage method is:
-%
-%      unsigned int IsSubimage(const char *geometry,const unsigned int pedantic)
-%
-%  A description of each parameter follows:
-%
-%    o geometry: This string is the geometry specification.
-%
-%    o pedantic: A value other than 0 invokes a more restrictive set of
-%      conditions for a valid specification (e.g. [1], [1-4], [4-1]).
-%
-*/
-MagickExport unsigned int IsSubimage(const char *geometry,
-  const unsigned int pedantic)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  if (geometry == (const char *) NULL)
-    return(MagickFalse);
-  if ((strchr(geometry,'x') != (char *) NULL) ||
-      (strchr(geometry,'X') != (char *) NULL))
-    return(MagickFalse);
-  if ((pedantic != MagickFalse) && (strchr(geometry,',') != (char *) NULL))
-    return(MagickFalse);
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     L e v e l I m a g e C o l o r s                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  LevelImageColor() will map the given color to "black" and "white"
-%  values, limearly spreading out the colors, and level values on a channel by
-%  channel bases, as per LevelImage().  The given colors allows you to specify
-%  different level ranges for each of the color channels separately.
-%
-%  If the boolean 'invert' is set true the image values will modifyed in the
-%  reverse direction. That is any existing "black" and "white" colors in the
-%  image will become the color values given, with all other values compressed
-%  appropriatally.  This effectivally maps a greyscale gradient into the given
-%  color gradient.
-%
-%  Deprecated, replace with:
-%
-%    LevelColorsImageChannel(image,channel,black_color,white_color,invert);
-%
-%  The format of the LevelImageColors method is:
-%
-%  MagickBooleanType LevelImageColors(Image *image,const ChannelType channel,
-%    const MagickPixelPacket *black_color,const MagickPixelPacket *white_color,
-%    const MagickBooleanType invert)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o channel: the channel.
-%
-%    o black_color: The color to map black to/from
-%
-%    o white_point: The color to map white to/from
-%
-%    o invert: if true map the colors (levelize), rather than from (level)
-%
-*/
-MagickBooleanType LevelImageColors(Image *image,const ChannelType channel,
-  const MagickPixelPacket *black_color,const MagickPixelPacket *white_color,
-  const MagickBooleanType invert)
-{
-  return(LevelColorsImageChannel(image,channel,black_color,white_color,invert));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   L i b e r a t e M e m o r y                                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  LiberateMemory() frees memory that has already been allocated, and NULL's
-%  the pointer to it.
-%
-%  The format of the LiberateMemory method is:
-%
-%      void LiberateMemory(void **memory)
-%
-%  A description of each parameter follows:
-%
-%    o memory: A pointer to a block of memory to free for reuse.
-%
-*/
-MagickExport void LiberateMemory(void **memory)
-{
-  assert(memory != (void **) NULL);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  if (*memory == (void *) NULL)
-    return;
-  free(*memory);
-  *memory=(void *) NULL;
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   L i b e r a t e S e m a p h o r e I n f o                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  LiberateSemaphoreInfo() relinquishes a semaphore.
-%
-%  Deprecated, replace with:
-%
-%    UnlockSemaphoreInfo(*semaphore_info);
-%
-%  The format of the LiberateSemaphoreInfo method is:
-%
-%      LiberateSemaphoreInfo(void **semaphore_info)
-%
-%  A description of each parameter follows:
-%
-%    o semaphore_info: Specifies a pointer to an SemaphoreInfo structure.
-%
-*/
-MagickExport void LiberateSemaphoreInfo(SemaphoreInfo **semaphore_info)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  UnlockSemaphoreInfo(*semaphore_info);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   M a g i c k I n c a r n a t e                                             %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MagickIncarnate() initializes the ImageMagick environment.
-%
-%  Deprecated, replace with:
-%
-%    MagickCoreGenesis(path,MagickFalse);
-%
-%  The format of the MagickIncarnate function is:
-%
-%      MagickIncarnate(const char *path)
-%
-%  A description of each parameter follows:
-%
-%    o path: the execution path of the current ImageMagick client.
-%
-*/
-
-MagickExport void MagickIncarnate(const char *path)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.1");
-  MagickCoreGenesis(path,MagickFalse);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   M a g i c k M o n i t o r                                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MagickMonitor() calls the monitor handler method with a text string that
-%  describes the task and a measure of completion.  The method returns
-%  MagickTrue on success otherwise MagickFalse if an error is encountered, e.g.
-%  if there was a user interrupt.
-%
-%  The format of the MagickMonitor method is:
-%
-%      MagickBooleanType MagickMonitor(const char *text,
-%        const MagickOffsetType offset,const MagickSizeType span,
-%        void *client_data)
-%
-%  A description of each parameter follows:
-%
-%    o offset: the position relative to the span parameter which represents
-%      how much progress has been made toward completing a task.
-%
-%    o span: the span relative to completing a task.
-%
-%    o client_data: the client data.
-%
-*/
-MagickExport MagickBooleanType MagickMonitor(const char *text,
-  const MagickOffsetType offset,const MagickSizeType span,
-  void *magick_unused(client_data))
-{
-  ExceptionInfo
-    *exception;
-
-  MagickBooleanType
-    status;
-
-  assert(text != (const char *) NULL);
-  (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",text);
-  ProcessPendingEvents(text);
-  status=MagickTrue;
-  exception=AcquireExceptionInfo();
-  if (monitor_handler != (MonitorHandler) NULL)
-    status=(*monitor_handler)(text,offset,span,exception);
-  exception=DestroyExceptionInfo(exception);
-  return(status);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   M a p I m a g e                                                           %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MapImage() replaces the colors of an image with the closest color from a
-%  reference image.
-%
-%  Deprecated, replace with:
-%
-%     QuantizeInfo quantize_info;
-%     GetQuantizeInfo(&quantize_info);
-%     quantize_info.dither=dither;
-%     RemapImage(&quantize_info,image,map_image);
-%
-%  The format of the MapImage method is:
-%
-%      MagickBooleanType MapImage(Image *image,const Image *map_image,
-%        const MagickBooleanType dither)
-%
-%  A description of each parameter follows:
-%
-%    o image: Specifies a pointer to an Image structure.
-%
-%    o map_image: the image.  Reduce image to a set of colors represented by
-%      this image.
-%
-%    o dither: Set this integer value to something other than zero to
-%      dither the mapped image.
-%
-*/
-MagickExport MagickBooleanType MapImage(Image *image,const Image *map_image,
-  const MagickBooleanType dither)
-{
-  QuantizeInfo
-    quantize_info;
-
-  /*
-    Initialize color cube.
-  */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  assert(map_image != (Image *) NULL);
-  assert(map_image->signature == MagickSignature);
-  GetQuantizeInfo(&quantize_info);
-  quantize_info.dither=dither;
-  return(RemapImage(&quantize_info,image,map_image));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   M a p I m a g e s                                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MapImages() replaces the colors of a sequence of images with the closest
-%  color from a reference image.
-%
-%  Deprecated, replace with:
-%
-%     QuantizeInfo quantize_info;
-%     GetQuantizeInfo(&quantize_info);
-%     quantize_info.dither=dither;
-%     RemapImages(&quantize_info,images,map_image);
-%
-%  The format of the MapImage method is:
-%
-%      MagickBooleanType MapImages(Image *images,Image *map_image,
-%        const MagickBooleanType dither)
-%
-%  A description of each parameter follows:
-%
-%    o image: Specifies a pointer to a set of Image structures.
-%
-%    o map_image: the image.  Reduce image to a set of colors represented by
-%      this image.
-%
-%    o dither: Set this integer value to something other than zero to
-%      dither the quantized image.
-%
-*/
-MagickExport MagickBooleanType MapImages(Image *images,const Image *map_image,
-  const MagickBooleanType dither)
-{
-  QuantizeInfo
-    quantize_info;
-
-  assert(images != (Image *) NULL);
-  assert(images->signature == MagickSignature);
-  if (images->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename);
-  GetQuantizeInfo(&quantize_info);
-  quantize_info.dither=dither;
-  return(RemapImages(&quantize_info,images,map_image));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   M a t t e F l o o d f i l l I m a g e                                     %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MatteFloodfill() changes the transparency value of any pixel that matches
-%  target and is an immediate neighbor.  If the method FillToBorderMethod
-%  is specified, the transparency value is changed for any neighbor pixel
-%  that does not match the bordercolor member of image.
-%
-%  By default target must match a particular pixel transparency exactly.
-%  However, in many cases two transparency values may differ by a
-%  small amount.  The fuzz member of image defines how much tolerance is
-%  acceptable to consider two transparency values as the same.  For example,
-%  set fuzz to 10 and the opacity values of 100 and 102 respectively are
-%  now interpreted as the same value for the purposes of the floodfill.
-%
-%  The format of the MatteFloodfillImage method is:
-%
-%      MagickBooleanType MatteFloodfillImage(Image *image,
-%        const PixelPacket target,const Quantum opacity,const ssize_t x_offset,
-%        const ssize_t y_offset,const PaintMethod method)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o target: the RGB value of the target color.
-%
-%    o opacity: the level of transparency: 0 is fully opaque and QuantumRange is
-%      fully transparent.
-%
-%    o x,y: the starting location of the operation.
-%
-%    o method:  Choose either FloodfillMethod or FillToBorderMethod.
-%
-*/
-MagickExport MagickBooleanType MatteFloodfillImage(Image *image,
-  const PixelPacket target,const Quantum opacity,const ssize_t x_offset,
-  const ssize_t y_offset,const PaintMethod method)
-{
-  Image
-    *floodplane_image;
-
-  MagickBooleanType
-    skip;
-
-  register SegmentInfo
-    *s;
-
-  SegmentInfo
-    *segment_stack;
-
-  ssize_t
-    offset,
-    start,
-    x,
-    x1,
-    x2,
-    y;
-
-  /*
-    Check boundary conditions.
-  */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  if ((x_offset < 0) || (x_offset >= (ssize_t) image->columns))
-    return(MagickFalse);
-  if ((y_offset < 0) || (y_offset >= (ssize_t) image->rows))
-    return(MagickFalse);
-  if (SetImageStorageClass(image,DirectClass) == MagickFalse)
-    return(MagickFalse);
-  if (image->matte == MagickFalse)
-    (void) SetImageAlphaChannel(image,OpaqueAlphaChannel);
-  floodplane_image=CloneImage(image,image->columns,image->rows,MagickTrue,
-    &image->exception);
-  if (floodplane_image == (Image *) NULL)
-    return(MagickFalse);
-  (void) SetImageAlphaChannel(floodplane_image,OpaqueAlphaChannel);
-  /*
-    Set floodfill color.
-  */
-  segment_stack=(SegmentInfo *) AcquireQuantumMemory(MaxStacksize,
-    sizeof(*segment_stack));
-  if (segment_stack == (SegmentInfo *) NULL)
-    {
-      floodplane_image=DestroyImage(floodplane_image);
-      ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
-        image->filename);
-    }
-  /*
-    Push initial segment on stack.
-  */
-  x=x_offset;
-  y=y_offset;
-  start=0;
-  s=segment_stack;
-  PushSegmentStack(y,x,x,1);
-  PushSegmentStack(y+1,x,x,-1);
-  while (s > segment_stack)
-  {
-    register const PixelPacket
-      *restrict p;
-
-    register ssize_t
-      x;
-
-    register PixelPacket
-      *restrict q;
-
-    /*
-      Pop segment off stack.
-    */
-    s--;
-    x1=(ssize_t) s->x1;
-    x2=(ssize_t) s->x2;
-    offset=(ssize_t) s->y2;
-    y=(ssize_t) s->y1+offset;
-    /*
-      Recolor neighboring pixels.
-    */
-    p=GetVirtualPixels(image,0,y,(size_t) (x1+1),1,&image->exception);
-    q=GetAuthenticPixels(floodplane_image,0,y,(size_t) (x1+1),1,
-      &image->exception);
-    if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
-      break;
-    p+=x1;
-    q+=x1;
-    for (x=x1; x >= 0; x--)
-    {
-      if (q->opacity == (Quantum) TransparentOpacity)
-        break;
-      if (method == FloodfillMethod)
-        {
-          if (IsColorSimilar(image,p,&target) == MagickFalse)
-            break;
-        }
-      else
-        if (IsColorSimilar(image,p,&target) != MagickFalse)
-          break;
-      q->opacity=(Quantum) TransparentOpacity;
-      q--;
-      p--;
-    }
-    if (SyncAuthenticPixels(floodplane_image,&image->exception) == MagickFalse)
-      break;
-    skip=x >= x1 ? MagickTrue : MagickFalse;
-    if (skip == MagickFalse)
-      {
-        start=x+1;
-        if (start < x1)
-          PushSegmentStack(y,start,x1-1,-offset);
-        x=x1+1;
-      }
-    do
-    {
-      if (skip == MagickFalse)
-        {
-          if (x < (ssize_t) image->columns)
-            {
-              p=GetVirtualPixels(image,x,y,image->columns-x,1,
-                &image->exception);
-              q=GetAuthenticPixels(floodplane_image,x,y,image->columns-x,1,
-                &image->exception);
-              if ((p == (const PixelPacket *) NULL) ||
-                  (q == (PixelPacket *) NULL))
-                break;
-              for ( ; x < (ssize_t) image->columns; x++)
-              {
-                if (q->opacity == (Quantum) TransparentOpacity)
-                  break;
-                if (method == FloodfillMethod)
-                  {
-                    if (IsColorSimilar(image,p,&target) == MagickFalse)
-                      break;
-                  }
-                else
-                  if (IsColorSimilar(image,p,&target) != MagickFalse)
-                    break;
-                q->opacity=(Quantum) TransparentOpacity;
-                q++;
-                p++;
-              }
-              if (SyncAuthenticPixels(floodplane_image,&image->exception) == MagickFalse)
-                break;
-            }
-          PushSegmentStack(y,start,x-1,offset);
-          if (x > (x2+1))
-            PushSegmentStack(y,x2+1,x-1,-offset);
-        }
-      skip=MagickFalse;
-      x++;
-      if (x <= x2)
-        {
-          p=GetVirtualPixels(image,x,y,(size_t) (x2-x+1),1,
-            &image->exception);
-          q=GetAuthenticPixels(floodplane_image,x,y,(size_t) (x2-x+1),1,
-            &image->exception);
-          if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
-            break;
-          for ( ; x <= x2; x++)
-          {
-            if (q->opacity == (Quantum) TransparentOpacity)
-              break;
-            if (method == FloodfillMethod)
-              {
-                if (IsColorSimilar(image,p,&target) != MagickFalse)
-                  break;
-              }
-            else
-              if (IsColorSimilar(image,p,&target) == MagickFalse)
-                break;
-            p++;
-            q++;
-          }
-        }
-      start=x;
-    } while (x <= x2);
-  }
-  for (y=0; y < (ssize_t) image->rows; y++)
-  {
-    register const PixelPacket
-      *restrict p;
-
-    register ssize_t
-      x;
-
-    register PixelPacket
-      *restrict q;
-
-    /*
-      Tile fill color onto floodplane.
-    */
-    p=GetVirtualPixels(floodplane_image,0,y,image->columns,1,
-      &image->exception);
-    q=GetAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-    if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
-      break;
-    for (x=0; x < (ssize_t) image->columns; x++)
-    {
-      if (GetOpacityPixelComponent(p) != OpaqueOpacity)
-        q->opacity=opacity;
-      p++;
-      q++;
-    }
-    if (SyncAuthenticPixels(image,&image->exception) == MagickFalse)
-      break;
-  }
-  segment_stack=(SegmentInfo *) RelinquishMagickMemory(segment_stack);
-  floodplane_image=DestroyImage(floodplane_image);
-  return(y == (ssize_t) image->rows ? MagickTrue : MagickFalse);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     M a x i m u m I m a g e s                                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MaximumImages() returns the maximum intensity of an image sequence.
-%
-%  Deprecated, replace with:
-%
-%    EvaluateImages(images,MinEvaluateOperator,exception);
-%
-%  The format of the MaxImages method is:
-%
-%      Image *MaximumImages(Image *images,ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image sequence.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *MaximumImages(const Image *images,ExceptionInfo *exception)
-{
-  return(EvaluateImages(images,MinEvaluateOperator,exception));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     M i n i m u m I m a g e s                                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MinimumImages() returns the minimum intensity of an image sequence.
-%
-%  Deprecated, replace with:
-%
-%    EvaluateImages(images,MinEvaluateOperator,exception);
-%
-%  The format of the MinimumImages method is:
-%
-%      Image *MinimumImages(Image *images,ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image sequence.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *MinimumImages(const Image *images,ExceptionInfo *exception)
-{
-  return(EvaluateImages(images,MinEvaluateOperator,exception));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     M e d i a n F i l t e r I m a g e                                       %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MedianFilterImage() applies a digital filter that improves the quality
-%  of a noisy image.  Each pixel is replaced by the median in a set of
-%  neighboring pixels as defined by radius.
-%
-%  The algorithm was contributed by Mike Edmonds and implements an insertion
-%  sort for selecting median color-channel values.  For more on this algorithm
-%  see "Skip Lists: A probabilistic Alternative to Balanced Trees" by William
-%  Pugh in the June 1990 of Communications of the ACM.
-%
-%  The format of the MedianFilterImage method is:
-%
-%      Image *MedianFilterImage(const Image *image,const double radius,
-%        ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o radius: the radius of the pixel neighborhood.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *MedianFilterImage(const Image *image,const double radius,
-  ExceptionInfo *exception)
-{
-  Image
-    *median_image;
-
-  median_image=StatisticImage(image,MedianStatistic,(size_t) radius,(size_t)
-    radius,exception);
-  return(median_image);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     M o d e I m a g e                                                       %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ModeImage() makes each pixel the 'predominate color' of the neighborhood
-%  of the specified radius.
-%
-%  The format of the ModeImage method is:
-%
-%      Image *ModeImage(const Image *image,const double radius,
-%        ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o radius: the radius of the pixel neighborhood.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *ModeImage(const Image *image,const double radius,
-  ExceptionInfo *exception)
-{
-  Image
-    *mode_image;
-
-  mode_image=StatisticImage(image,ModeStatistic,(size_t) radius,(size_t) radius,
-    exception);
-  return(mode_image);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     M o s a i c I m a g e s                                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  MosaicImages() Obsolete Function: Use MergeImageLayers() instead.
-%
-%  Deprecated, replace with:
-%
-%    MergeImageLayers(image,MosaicLayer,exception);
-%
-%  The format of the MosaicImage method is:
-%
-%      Image *MosaicImages(const Image *image,ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image list to be composited together
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *MosaicImages(Image *image,ExceptionInfo *exception)
-{
-  return(MergeImageLayers(image,MosaicLayer,exception));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     O p a q u e I m a g e                                                   %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  OpaqueImage() changes any pixel that matches color with the color
-%  defined by fill.
-%
-%  By default color must match a particular pixel color exactly.  However,
-%  in many cases two colors may differ by a small amount.  Fuzz defines
-%  how much tolerance is acceptable to consider two colors as the same.
-%  For example, set fuzz to 10 and the color red at intensities of 100 and
-%  102 respectively are now interpreted as the same color.
-%
-%  The format of the OpaqueImage method is:
-%
-%      MagickBooleanType OpaqueImage(Image *image,
-%        const PixelPacket *target,const PixelPacket fill)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o target: the RGB value of the target color.
-%
-%    o fill: the replacement color.
-%
-*/
-MagickExport MagickBooleanType OpaqueImage(Image *image,
-  const PixelPacket target,const PixelPacket fill)
-{
-#define OpaqueImageTag  "Opaque/Image"
-
-  MagickBooleanType
-    proceed;
-
-  register ssize_t
-    i;
-
-  ssize_t
-    y;
-
-  /*
-    Make image color opaque.
-  */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.1.0");
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  switch (image->storage_class)
-  {
-    case DirectClass:
-    default:
-    {
-      /*
-        Make DirectClass image opaque.
-      */
-      for (y=0; y < (ssize_t) image->rows; y++)
-      {
-        register ssize_t
-          x;
-
-        register PixelPacket
-          *restrict q;
-
-        q=GetAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-        if (q == (PixelPacket *) NULL)
-          break;
-        for (x=0; x < (ssize_t) image->columns; x++)
-        {
-          if (IsColorSimilar(image,q,&target) != MagickFalse)
-            *q=fill;
-          q++;
-        }
-        if (SyncAuthenticPixels(image,&image->exception) == MagickFalse)
-          break;
-        proceed=SetImageProgress(image,OpaqueImageTag,(MagickOffsetType) y,
-          image->rows);
-        if (proceed == MagickFalse)
-          break;
-      }
-      break;
-    }
-    case PseudoClass:
-    {
-      /*
-        Make PseudoClass image opaque.
-      */
-      for (i=0; i < (ssize_t) image->colors; i++)
-      {
-        if (IsColorSimilar(image,&image->colormap[i],&target) != MagickFalse)
-          image->colormap[i]=fill;
-      }
-      if (fill.opacity != OpaqueOpacity)
-        {
-          for (y=0; y < (ssize_t) image->rows; y++)
-          {
-            register ssize_t
-              x;
-
-            register PixelPacket
-              *restrict q;
-
-            q=GetAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-            if (q == (PixelPacket *) NULL)
-              break;
-            for (x=0; x < (ssize_t) image->columns; x++)
-            {
-              if (IsColorSimilar(image,q,&target) != MagickFalse)
-                q->opacity=fill.opacity;
-              q++;
-            }
-            if (SyncAuthenticPixels(image,&image->exception) == MagickFalse)
-              break;
-          }
-        }
-      (void) SyncImage(image);
-      break;
-    }
-  }
-  if (fill.opacity != OpaqueOpacity)
-    image->matte=MagickTrue;
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   O p e n C a c h e V i e w                                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  OpenCacheView() opens a view into the pixel cache, using the
-%  VirtualPixelMethod that is defined within the given image itself.
-%
-%  Deprecated, replace with:
-%
-%    AcquireCacheView(image);
-%
-%  The format of the OpenCacheView method is:
-%
-%      CacheView *OpenCacheView(const Image *image)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-*/
-MagickExport CacheView *OpenCacheView(const Image *image)
-{
-  return(AcquireCacheView(image));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   P a i n t F l o o d f i l l I m a g e                                     %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  PaintFloodfill() changes the color value of any pixel that matches
-%  target and is an immediate neighbor.  If the method FillToBorderMethod is
-%  specified, the color value is changed for any neighbor pixel that does not
-%  match the bordercolor member of image.
-%
-%  By default target must match a particular pixel color exactly.
-%  However, in many cases two colors may differ by a small amount.  The
-%  fuzz member of image defines how much tolerance is acceptable to
-%  consider two colors as the same.  For example, set fuzz to 10 and the
-%  color red at intensities of 100 and 102 respectively are now
-%  interpreted as the same color for the purposes of the floodfill.
-%
-%  Deprecated, replace with:
-%
-%    FloodfillPaintImage(image,channel,draw_info,target,x,y,
-%      method == FloodfillMethod ? MagickFalse : MagickTrue);
-%
-%  The format of the PaintFloodfillImage method is:
-%
-%      MagickBooleanType PaintFloodfillImage(Image *image,
-%        const ChannelType channel,const MagickPixelPacket target,const ssize_t x,
-%        const ssize_t y,const DrawInfo *draw_info,const PaintMethod method)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o channel: the channel(s).
-%
-%    o target: the RGB value of the target color.
-%
-%    o x,y: the starting location of the operation.
-%
-%    o draw_info: the draw info.
-%
-%    o method: Choose either FloodfillMethod or FillToBorderMethod.
-%
-*/
-MagickExport MagickBooleanType PaintFloodfillImage(Image *image,
-  const ChannelType channel,const MagickPixelPacket *target,const ssize_t x,
-  const ssize_t y,const DrawInfo *draw_info,const PaintMethod method)
-{
-  MagickBooleanType
-    status;
-
-  status=FloodfillPaintImage(image,channel,draw_info,target,x,y,
-    method == FloodfillMethod ? MagickFalse : MagickTrue);
-  return(status);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%     P a i n t O p a q u e I m a g e                                         %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  PaintOpaqueImage() changes any pixel that matches color with the color
-%  defined by fill.
-%
-%  By default color must match a particular pixel color exactly.  However,
-%  in many cases two colors may differ by a small amount.  Fuzz defines
-%  how much tolerance is acceptable to consider two colors as the same.
-%  For example, set fuzz to 10 and the color red at intensities of 100 and
-%  102 respectively are now interpreted as the same color.
-%
-%  Deprecated, replace with:
-%
-%    OpaquePaintImageChannel(image,DefaultChannels,target,fill,MagickFalse);
-%    OpaquePaintImageChannel(image,channel,target,fill,MagickFalse);
-%
-%  The format of the PaintOpaqueImage method is:
-%
-%      MagickBooleanType PaintOpaqueImage(Image *image,
-%        const PixelPacket *target,const PixelPacket *fill)
-%      MagickBooleanType PaintOpaqueImageChannel(Image *image,
-%        const ChannelType channel,const PixelPacket *target,
-%        const PixelPacket *fill)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o channel: the channel(s).
-%
-%    o target: the RGB value of the target color.
-%
-%    o fill: the replacement color.
-%
-*/
-
-MagickExport MagickBooleanType PaintOpaqueImage(Image *image,
-  const MagickPixelPacket *target,const MagickPixelPacket *fill)
-{
-  MagickBooleanType
-    status;
-
-  status=OpaquePaintImageChannel(image,DefaultChannels,target,fill,MagickFalse);
-  return(status);
-}
-
-MagickExport MagickBooleanType PaintOpaqueImageChannel(Image *image,
-  const ChannelType channel,const MagickPixelPacket *target,
-  const MagickPixelPacket *fill)
-{
-  return(OpaquePaintImageChannel(image,channel,target,fill,MagickFalse));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     P a i n t T r a n s p a r e n t I m a g e                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  PaintTransparentImage() changes the opacity value associated with any pixel
-%  that matches color to the value defined by opacity.
-%
-%  By default color must match a particular pixel color exactly.  However,
-%  in many cases two colors may differ by a small amount.  Fuzz defines
-%  how much tolerance is acceptable to consider two colors as the same.
-%  For example, set fuzz to 10 and the color red at intensities of 100 and
-%  102 respectively are now interpreted as the same color.
-%
-%  Deprecated, replace with:
-%
-%    TransparentPaintImage(image,target,opacity,MagickFalse);
-%
-%  The format of the PaintTransparentImage method is:
-%
-%      MagickBooleanType PaintTransparentImage(Image *image,
-%        const MagickPixelPacket *target,const Quantum opacity)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o target: the RGB value of the target color.
-%
-%    o opacity: the replacement opacity value.
-%
-*/
-MagickExport MagickBooleanType PaintTransparentImage(Image *image,
-  const MagickPixelPacket *target,const Quantum opacity)
-{
-  return(TransparentPaintImage(image,target,opacity,MagickFalse));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-+   P a r s e I m a g e G e o m e t r y                                       %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ParseImageGeometry() is similar to GetGeometry() except the returned
-%  geometry is modified as determined by the meta characters:  %, !, <,
-%  and >.
-%
-%  Deprecated, replace with:
-%
-%    ParseMetaGeometry(geometry,x,y,width,height);
-%
-%  The format of the ParseImageGeometry method is:
-%
-%      int ParseImageGeometry(char *geometry,ssize_t *x,ssize_t *y,
-%        size_t *width,size_t *height)
-%
-%  A description of each parameter follows:
-%
-%    o flags:  Method ParseImageGeometry returns a bitmask that indicates
-%      which of the four values were located in the geometry string.
-%
-%    o image_geometry:  Specifies a character string representing the geometry
-%      specification.
-%
-%    o x,y:  A pointer to an integer.  The x and y offset as determined by
-%      the geometry specification is returned here.
-%
-%    o width,height:  A pointer to an unsigned integer.  The width and height
-%      as determined by the geometry specification is returned here.
-%
-*/
-MagickExport int ParseImageGeometry(const char *geometry,ssize_t *x,ssize_t *y,
-  size_t *width,size_t *height)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.1");
-  return((int) ParseMetaGeometry(geometry,x,y,width,height));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   P a r s e S i z e G e o m e t r y                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ParseSizeGeometry() returns a region as defined by the geometry string with
-%  respect to the image dimensions and aspect ratio.
-%
-%  Deprecated, replace with:
-%
-%    ParseMetaGeometry(geometry,&region_info->x,&region_info->y,
-%      &region_info->width,&region_info->height);
-%
-%  The format of the ParseSizeGeometry method is:
-%
-%      MagickStatusType ParseSizeGeometry(const Image *image,
-%        const char *geometry,RectangeInfo *region_info)
-%
-%  A description of each parameter follows:
-%
-%    o geometry:  The geometry (e.g. 100x100+10+10).
-%
-%    o region_info: the region as defined by the geometry string.
-%
-*/
-MagickExport MagickStatusType ParseSizeGeometry(const Image *image,
-  const char *geometry,RectangleInfo *region_info)
-{
-  MagickStatusType
-    flags;
-
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.4.7");
-  SetGeometry(image,region_info);
-  flags=ParseMetaGeometry(geometry,&region_info->x,&region_info->y,
-    &region_info->width,&region_info->height);
-  return(flags);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   P o p I m a g e L i s t                                                   %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  PopImageList() removes the last image in the list.
-%
-%  Deprecated, replace with:
-%
-%    RemoveLastImageFromList(images);
-%
-%  The format of the PopImageList method is:
-%
-%      Image *PopImageList(Image **images)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image list.
-%
-*/
-MagickExport Image *PopImageList(Image **images)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  return(RemoveLastImageFromList(images));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   P o p I m a g e P i x e l s                                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  PopImagePixels() transfers one or more pixel components from the image pixel
-%  cache to a user supplied buffer.  The pixels are returned in network byte
-%  order.  MagickTrue is returned if the pixels are successfully transferred,
-%  otherwise MagickFalse.
-%
-%  The format of the PopImagePixels method is:
-%
-%      size_t PopImagePixels(Image *,const QuantumType quantum,
-%        unsigned char *destination)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o quantum: Declare which pixel components to transfer (RGB, RGBA, etc).
-%
-%    o destination:  The components are transferred to this buffer.
-%
-*/
-MagickExport size_t PopImagePixels(Image *image,const QuantumType quantum,
-  unsigned char *destination)
-{
-  QuantumInfo
-    *quantum_info;
-
-  size_t
-    length;
-
-  quantum_info=AcquireQuantumInfo((const ImageInfo *) NULL,image);
-  if (quantum_info == (QuantumInfo *) NULL)
-    return(0);
-  length=ExportQuantumPixels(image,(const CacheView *) NULL,quantum_info,
-    quantum,destination,&image->exception);
-  quantum_info=DestroyQuantumInfo(quantum_info);
-  return(length);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%  P o s t s c r i p t G e o m e t r y                                        %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  PostscriptGeometry() replaces any page mneumonic with the equivalent size in
-%  picas.
-%
-%  Deprecated, replace with:
-%
-%    GetPageGeometry(page);
-%
-%  The format of the PostscriptGeometry method is:
-%
-%      char *PostscriptGeometry(const char *page)
-%
-%  A description of each parameter follows.
-%
-%   o  page:  Specifies a pointer to an array of characters.
-%      The string is either a Postscript page name (e.g. A4) or a postscript
-%      page geometry (e.g. 612x792+36+36).
-%
-*/
-MagickExport char *PostscriptGeometry(const char *page)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.1");
-  return(GetPageGeometry(page));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   P u s h I m a g e L i s t                                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  PushImageList() adds an image to the end of the list.
-%
-%  Deprecated, replace with:
-%
-%    AppendImageToList(images,CloneImageList(image,exception));
-%
-%  The format of the PushImageList method is:
-%
-%      unsigned int PushImageList(Image *images,const Image *image,
-%        ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image list.
-%
-%    o image: the image.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport unsigned int PushImageList(Image **images,const Image *image,
-  ExceptionInfo *exception)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  AppendImageToList(images,CloneImageList(image,exception));
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   P u s h I m a g e P i x e l s                                             %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  PushImagePixels() transfers one or more pixel components from a user
-%  supplied buffer into the image pixel cache of an image.  The pixels are
-%  expected in network byte order.  It returns MagickTrue if the pixels are
-%  successfully transferred, otherwise MagickFalse.
-%
-%  The format of the PushImagePixels method is:
-%
-%      size_t PushImagePixels(Image *image,const QuantumType quantum,
-%        const unsigned char *source)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o quantum: Declare which pixel components to transfer (red, green, blue,
-%      opacity, RGB, or RGBA).
-%
-%    o source:  The pixel components are transferred from this buffer.
-%
-*/
-MagickExport size_t PushImagePixels(Image *image,const QuantumType quantum,
-  const unsigned char *source)
-{
-  QuantumInfo
-    *quantum_info;
-
-  size_t
-    length;
-
-  quantum_info=AcquireQuantumInfo((const ImageInfo *) NULL,image);
-  if (quantum_info == (QuantumInfo *) NULL)
-    return(0);
-  length=ImportQuantumPixels(image,(CacheView *) NULL,quantum_info,quantum,
-    source,&image->exception);
-  quantum_info=DestroyQuantumInfo(quantum_info);
-  return(length);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%  Q u a n t i z a t i o n E r r o r                                          %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  QuantizationError() measures the difference between the original and
-%  quantized images.  This difference is the total quantization error.  The
-%  error is computed by summing over all pixels in an image the distance
-%  squared in RGB space between each reference pixel value and its quantized
-%  value.  These values are computed:
-%
-%    o mean_error_per_pixel:  This value is the mean error for any single
-%      pixel in the image.
-%
-%    o normalized_mean_square_error:  This value is the normalized mean
-%      quantization error for any single pixel in the image.  This distance
-%      measure is normalized to a range between 0 and 1.  It is independent
-%      of the range of red, green, and blue values in the image.
-%
-%    o normalized_maximum_square_error:  Thsi value is the normalized
-%      maximum quantization error for any single pixel in the image.  This
-%      distance measure is normalized to a range between 0 and 1.  It is
-%      independent of the range of red, green, and blue values in your image.
-%
-%  Deprecated, replace with:
-%
-%    GetImageQuantizeError(image);
-%
-%  The format of the QuantizationError method is:
-%
-%      unsigned int QuantizationError(Image *image)
-%
-%  A description of each parameter follows.
-%
-%    o image: Specifies a pointer to an Image structure;  returned from
-%      ReadImage.
-%
-*/
-MagickExport unsigned int QuantizationError(Image *image)
-{
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.3");
-  return(GetImageQuantizeError(image));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%     R a n d o m C h a n n e l T h r e s h o l d I m a g e                   %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  RandomChannelThresholdImage() changes the value of individual pixels based
-%  on the intensity of each pixel compared to a random threshold.  The result
-%  is a low-contrast, two color image.
-%
-%  The format of the RandomChannelThresholdImage method is:
-%
-%      unsigned int RandomChannelThresholdImage(Image *image,
-%         const char *channel, const char *thresholds,
-%         ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o channel: the channel or channels to be thresholded.
-%
-%    o thresholds: a geometry string containing LOWxHIGH thresholds.
-%      If the string contains 2x2, 3x3, or 4x4, then an ordered
-%      dither of order 2, 3, or 4 will be performed instead.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport unsigned int RandomChannelThresholdImage(Image *image,const char
-    *channel,const char *thresholds,ExceptionInfo *exception)
-{
-#define RandomChannelThresholdImageText  "  RandomChannelThreshold image...  "
-
-  double
-    lower_threshold,
-    upper_threshold;
-
-  RandomInfo
-    *random_info;
-
-  ssize_t
-    count,
-    y;
-
-  static MagickRealType
-    o2[4]={0.2f, 0.6f, 0.8f, 0.4f},
-    o3[9]={0.1f, 0.6f, 0.3f, 0.7f, 0.5f, 0.8f, 0.4f, 0.9f, 0.2f},
-    o4[16]={0.1f, 0.7f, 1.1f, 0.3f, 1.0f, 0.5f, 1.5f, 0.8f, 1.4f, 1.6f, 0.6f,
-      1.2f, 0.4f, 0.9f, 1.3f, 0.2f},
-    threshold=128;
-
-  size_t
-    order;
-
-  /*
-    Threshold image.
-  */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  assert(exception != (ExceptionInfo *) NULL);
-  assert(exception->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  if (thresholds == (const char *) NULL)
-    return(MagickTrue);
-  if (LocaleCompare(thresholds,"2x2") == 0)
-    order=2;
-  else
-    if (LocaleCompare(thresholds,"3x3") == 0)
-      order=3;
-    else
-      if (LocaleCompare(thresholds,"4x4") == 0)
-        order=4;
-      else
-        {
-          order=1;
-          lower_threshold=0;
-          upper_threshold=0;
-          count=(ssize_t) sscanf(thresholds,"%lf[/x%%]%lf",&lower_threshold,
-            &upper_threshold);
-          if (strchr(thresholds,'%') != (char *) NULL)
-            {
-              upper_threshold*=(.01*QuantumRange);
-              lower_threshold*=(.01*QuantumRange);
-            }
-          if (count == 1)
-            upper_threshold=(MagickRealType) QuantumRange-lower_threshold;
-        }
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TransformEvent,GetMagickModule(),
-      "  RandomChannelThresholdImage: channel type=%s",channel);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TransformEvent,GetMagickModule(),
-      "    Thresholds: %s (%fx%f)",thresholds,lower_threshold,upper_threshold);
-  if (LocaleCompare(channel,"all") == 0 ||
-      LocaleCompare(channel,"intensity") == 0)
-    if (AcquireImageColormap(image,2) == MagickFalse)
-      ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
-        image->filename);
-  random_info=AcquireRandomInfo();
-  for (y=0; y < (ssize_t) image->rows; y++)
-  {
-    register ssize_t
-      x;
-
-    register IndexPacket
-      index,
-      *restrict indexes;
-
-    register PixelPacket
-      *restrict q;
-
-    q=GetAuthenticPixels(image,0,y,image->columns,1,exception);
-    if (q == (PixelPacket *) NULL)
-      break;
-    if (LocaleCompare(channel,"all") == 0 ||
-        LocaleCompare(channel,"intensity") == 0)
-      {
-        indexes=GetAuthenticIndexQueue(image);
-        for (x=0; x < (ssize_t) image->columns; x++)
-        {
-          MagickRealType
-            intensity;
-
-          intensity=(MagickRealType) PixelIntensityToQuantum(q);
-          if (order == 1)
-            {
-              if (intensity < lower_threshold)
-                threshold=lower_threshold;
-              else if (intensity > upper_threshold)
-                threshold=upper_threshold;
-              else
-                threshold=(MagickRealType) (QuantumRange*
-                  GetPseudoRandomValue(random_info));
-            }
-          else if (order == 2)
-            threshold=(MagickRealType) QuantumRange*o2[(x%2)+2*(y%2)];
-          else if (order == 3)
-            threshold=(MagickRealType) QuantumRange*o3[(x%3)+3*(y%3)];
-          else if (order == 4)
-            threshold=(MagickRealType) QuantumRange*o4[(x%4)+4*(y%4)];
-          index=(IndexPacket) (intensity <= threshold ? 0 : 1);
-          SetIndexPixelComponent(indexes+x,index);
-          SetRedPixelComponent(q,image->colormap[(ssize_t) index].red);
-          SetGreenPixelComponent(q,image->colormap[(ssize_t) index].green);
-          SetBluePixelComponent(q,image->colormap[(ssize_t) index].blue);
-          q++;
-        }
-      }
-    if (LocaleCompare(channel,"opacity") == 0 ||
-        LocaleCompare(channel,"all") == 0 ||
-        LocaleCompare(channel,"matte") == 0)
-      {
-        if (image->matte != MagickFalse)
-          for (x=0; x < (ssize_t) image->columns; x++)
-            {
-              if (order == 1)
-                {
-                  if ((MagickRealType) q->opacity < lower_threshold)
-                    threshold=lower_threshold;
-                  else if ((MagickRealType) q->opacity > upper_threshold)
-                    threshold=upper_threshold;
-                  else
-                    threshold=(MagickRealType) (QuantumRange*
-                      GetPseudoRandomValue(random_info));
-                }
-              else if (order == 2)
-                threshold=(MagickRealType) QuantumRange*o2[(x%2)+2*(y%2)];
-              else if (order == 3)
-                threshold=(MagickRealType) QuantumRange*o3[(x%3)+3*(y%3)];
-              else if (order == 4)
-                threshold=(MagickRealType) QuantumRange*o4[(x%4)+4*(y%4)]/1.7;
-              SetOpacityPixelComponent(q,(MagickRealType) q->opacity <=
-                threshold ? 0 : QuantumRange);
-              q++;
-            }
-      }
-    else
-      {
-        /* To Do: red, green, blue, cyan, magenta, yellow, black */
-        if (LocaleCompare(channel,"intensity") != 0)
-          ThrowBinaryException(OptionError,"UnrecognizedChannelType",
-            image->filename);
-      }
-    if (SyncAuthenticPixels(image,exception) == MagickFalse)
-      break;
-  }
-  random_info=DestroyRandomInfo(random_info);
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   R e a c q u i r e M e m o r y                                             %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ReacquireMemory() changes the size of the memory and returns a pointer to
-%  the (possibly moved) block.  The contents will be unchanged up to the
-%  lesser of the new and old sizes.
-%
-%  The format of the ReacquireMemory method is:
-%
-%      void ReacquireMemory(void **memory,const size_t size)
-%
-%  A description of each parameter follows:
-%
-%    o memory: A pointer to a memory allocation.  On return the pointer
-%      may change but the contents of the original allocation will not.
-%
-%    o size: the new size of the allocated memory.
-%
-*/
-MagickExport void ReacquireMemory(void **memory,const size_t size)
-{
-  void
-    *allocation;
-
-  assert(memory != (void **) NULL);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  if (*memory == (void *) NULL)
-    {
-      *memory=AcquireMagickMemory(size);
-      return;
-    }
-  allocation=realloc(*memory,size);
-  if (allocation == (void *) NULL)
-    *memory=RelinquishMagickMemory(*memory);
-  *memory=allocation;
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     R e c o l o r I m a g e                                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  RecolorImage() apply color transformation to an image. The method permits
-%  saturation changes, hue rotation, luminance to alpha, and various other
-%  effects.  Although variable-sized transformation matrices can be used,
-%  typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA
-%  (or RGBA with offsets).  The matrix is similar to those used by Adobe Flash
-%  except offsets are in column 6 rather than 5 (in support of CMYKA images)
-%  and offsets are normalized (divide Flash offset by 255).
-%
-%  The format of the RecolorImage method is:
-%
-%      Image *RecolorImage(const Image *image,const size_t order,
-%        const double *color_matrix,ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o order: the number of columns and rows in the recolor matrix.
-%
-%    o color_matrix: An array of double representing the recolor matrix.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *RecolorImage(const Image *image,const size_t order,
-  const double *color_matrix,ExceptionInfo *exception)
-{
-  KernelInfo
-    *kernel_info;
-
-  Image
-    *recolor_image;
-
-  kernel_info=AcquireKernelInfo("1");
-  if (kernel_info == (KernelInfo *) NULL)
-    return((Image *) NULL);
-  kernel_info->width=order;
-  kernel_info->height=order;
-  kernel_info->values=(double *) color_matrix;
-  recolor_image=ColorMatrixImage(image,kernel_info,exception);
-  kernel_info->values=(double *) NULL;
-  kernel_info=DestroyKernelInfo(kernel_info);
-  return(recolor_image);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     R e d u c e N o i s e I m a g e                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ReduceNoiseImage() smooths the contours of an image while still preserving
-%  edge information.  The algorithm works by replacing each pixel with its
-%  neighbor closest in value.  A neighbor is defined by radius.  Use a radius
-%  of 0 and ReduceNoise() selects a suitable radius for you.
-%
-%  The format of the ReduceNoiseImage method is:
-%
-%      Image *ReduceNoiseImage(const Image *image,const double radius,
-%        ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o radius: the radius of the pixel neighborhood.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *ReduceNoiseImage(const Image *image,const double radius,
-  ExceptionInfo *exception)
-{
-  Image
-    *reduce_image;
-
-  reduce_image=StatisticImage(image,NonpeakStatistic,(size_t) radius,(size_t)
-    radius,exception);
-  return(reduce_image);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   R e s e t I m a g e A t t r i b u t e I t e r a t o r                     %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ResetImageAttributeIterator() resets the image attributes iterator.  Use it
-%  in conjunction with GetNextImageAttribute() to iterate over all the values
-%  associated with an image.
-%
-%  Deprecated, replace with:
-%
-%    ResetImagePropertyIterator(image);
-%
-%  The format of the ResetImageAttributeIterator method is:
-%
-%      ResetImageAttributeIterator(const ImageInfo *image)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-*/
-MagickExport void ResetImageAttributeIterator(const Image *image)
-{
-  ResetImagePropertyIterator(image);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S e t C a c h e V i e w P i x e l s                                       %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetCacheViewPixels() gets pixels from the in-memory or disk pixel cache as
-%  defined by the geometry parameters.   A pointer to the pixels is returned
-%  if the pixels are transferred, otherwise a NULL is returned.
-%
-%  Deprecated, replace with:
-%
-%    QueueCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-%      GetCacheViewException(cache_view));
-%
-%  The format of the SetCacheViewPixels method is:
-%
-%      PixelPacket *SetCacheViewPixels(CacheView *cache_view,const ssize_t x,
-%        const ssize_t y,const size_t columns,const size_t rows)
-%
-%  A description of each parameter follows:
-%
-%    o cache_view: the cache view.
-%
-%    o x,y,columns,rows:  These values define the perimeter of a region of
-%      pixels.
-%
-*/
-MagickExport PixelPacket *SetCacheViewPixels(CacheView *cache_view,const ssize_t x,
-  const ssize_t y,const size_t columns,const size_t rows)
-{
-  PixelPacket
-    *pixels;
-
-  pixels=QueueCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-    GetCacheViewException(cache_view));
-  return(pixels);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-+   S e t C a c h e T h e s h o l d                                           %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetCacheThreshold() sets the amount of free memory allocated for the pixel
-%  cache.  Once this threshold is exceeded, all subsequent pixels cache
-%  operations are to/from disk.
-%
-%  The format of the SetCacheThreshold() method is:
-%
-%      void SetCacheThreshold(const size_t threshold)
-%
-%  A description of each parameter follows:
-%
-%    o threshold: the number of megabytes of memory available to the pixel
-%      cache.
-%
-*/
-MagickExport void SetCacheThreshold(const size_t size)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.1");
-  (void) SetMagickResourceLimit(MemoryResource,size*1024*1024);
-  (void) SetMagickResourceLimit(MapResource,2*size*1024*1024);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S e t E x c e p t i o n I n f o                                           %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetExceptionInfo() sets the exception severity.
-%
-%  The format of the SetExceptionInfo method is:
-%
-%      MagickBooleanType SetExceptionInfo(ExceptionInfo *exception,
-%        ExceptionType severity)
-%
-%  A description of each parameter follows:
-%
-%    o exception: the exception info.
-%
-%    o severity: the exception severity.
-%
-*/
-MagickExport MagickBooleanType SetExceptionInfo(ExceptionInfo *exception,
-  ExceptionType severity)
-{
-  assert(exception != (ExceptionInfo *) NULL);
-  ClearMagickException(exception);
-  exception->severity=severity;
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S e t I m a g e                                                           %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetImage() sets the red, green, and blue components of each pixel to
-%  the image background color and the opacity component to the specified
-%  level of transparency.  The background color is defined by the
-%  background_color member of the image.
-%
-%  The format of the SetImage method is:
-%
-%      void SetImage(Image *image,const Quantum opacity)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o opacity: Set each pixel to this level of transparency.
-%
-*/
-MagickExport void SetImage(Image *image,const Quantum opacity)
-{
-  PixelPacket
-    background_color;
-
-  ssize_t
-    y;
-
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.2.0");
-  assert(image != (Image *) NULL);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
-  assert(image->signature == MagickSignature);
-  background_color=image->background_color;
-  if (opacity != OpaqueOpacity)
-    background_color.opacity=opacity;
-  if (background_color.opacity != OpaqueOpacity)
-    {
-      (void) SetImageStorageClass(image,DirectClass);
-      image->matte=MagickTrue;
-    }
-  if ((image->storage_class == PseudoClass) ||
-      (image->colorspace == CMYKColorspace))
-    {
-      /*
-        Set colormapped or CMYK image.
-      */
-      for (y=0; y < (ssize_t) image->rows; y++)
-      {
-        register IndexPacket
-          *restrict indexes;
-
-        register ssize_t
-          x;
-
-        register PixelPacket
-          *restrict q;
-
-        q=QueueAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-        if (q == (PixelPacket *) NULL)
-          break;
-        for (x=0; x < (ssize_t) image->columns; x++)
-          *q++=background_color;
-        indexes=GetAuthenticIndexQueue(image);
-        for (x=0; x < (ssize_t) image->columns; x++)
-          SetIndexPixelComponent(indexes+x,0);
-        if (SyncAuthenticPixels(image,&image->exception) == MagickFalse)
-          break;
-      }
-      return;
-    }
-  /*
-    Set DirectClass image.
-  */
-  for (y=0; y < (ssize_t) image->rows; y++)
-  {
-    register ssize_t
-      x;
-
-    register PixelPacket
-      *restrict q;
-
-    q=QueueAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-    if (q == (PixelPacket *) NULL)
-      break;
-    for (x=0; x < (ssize_t) image->columns; x++)
-      *q++=background_color;
-    if (SyncAuthenticPixels(image,&image->exception) == MagickFalse)
-      break;
-  }
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S e t I m a g e A t t r i b u t e                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetImageAttribute() searches the list of image attributes and replaces the
-%  attribute value.  If it is not found in the list, the attribute name
-%  and value is added to the list.
-%
-%  Deprecated, replace with:
-%
-%    SetImageProperty(image,key,value);
-%
-%  The format of the SetImageAttribute method is:
-%
-%       MagickBooleanType SetImageAttribute(Image *image,const char *key,
-%         const char *value)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o key: the key.
-%
-%    o value: the value.
-%
-*/
-MagickExport MagickBooleanType SetImageAttribute(Image *image,const char *key,
-  const char *value)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.3.1");
-  return(SetImageProperty(image,key,value));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S e t I m a g e L i s t                                                   %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetImageList() inserts an image into the list at the specified position.
-%
-%  The format of the SetImageList method is:
-%
-%      unsigned int SetImageList(Image *images,const Image *image,
-%        const ssize_t offset,ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image list.
-%
-%    o image: the image.
-%
-%    o offset: the position within the list.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport unsigned int SetImageList(Image **images,const Image *image,
-  const ssize_t offset,ExceptionInfo *exception)
-{
-  Image
-    *clone;
-
-  register ssize_t
-    i;
-
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  clone=CloneImageList(image,exception);
-  while (GetPreviousImageInList(*images) != (Image *) NULL)
-    (*images)=GetPreviousImageInList(*images);
-  for (i=0; i < offset; i++)
-  {
-    if (GetNextImageInList(*images) == (Image *) NULL)
-      return(MagickFalse);
-    (*images)=GetNextImageInList(*images);
-  }
-  InsertImageInList(images,clone);
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S e t I m a g e P i x e l s                                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetImagePixels() queues a mutable pixel region.
-%  If the region is successfully intialized a pointer to a PixelPacket
-%  array representing the region is returned, otherwise NULL is returned.
-%  The returned pointer may point to a temporary working buffer for the
-%  pixels or it may point to the final location of the pixels in memory.
-%
-%  Write-only access means that any existing pixel values corresponding to
-%  the region are ignored.  This useful while the initial image is being
-%  created from scratch, or if the existing pixel values are to be
-%  completely replaced without need to refer to their pre-existing values.
-%  The application is free to read and write the pixel buffer returned by
-%  SetImagePixels() any way it pleases. SetImagePixels() does not initialize
-%  the pixel array values. Initializing pixel array values is the
-%  application's responsibility.
-%
-%  Performance is maximized if the selected region is part of one row, or
-%  one or more full rows, since then there is opportunity to access the
-%  pixels in-place (without a copy) if the image is in RAM, or in a
-%  memory-mapped file. The returned pointer should *never* be deallocated
-%  by the user.
-%
-%  Pixels accessed via the returned pointer represent a simple array of type
-%  PixelPacket. If the image type is CMYK or the storage class is PseudoClass,
-%  call GetAuthenticIndexQueue() after invoking GetAuthenticPixels() to obtain
-%  the black color component or the colormap indexes (of type IndexPacket)
-%  corresponding to the region.  Once the PixelPacket (and/or IndexPacket)
-%  array has been updated, the changes must be saved back to the underlying
-%  image using SyncAuthenticPixels() or they may be lost.
-%
-%  Deprecated, replace with:
-%
-%    QueueAuthenticPixels(image,x,y,columns,rows,&image->exception);
-%
-%  The format of the SetImagePixels() method is:
-%
-%      PixelPacket *SetImagePixels(Image *image,const ssize_t x,const ssize_t y,
-%        const size_t columns,const size_t rows)
-%
-%  A description of each parameter follows:
-%
-%    o pixels: SetImagePixels returns a pointer to the pixels if they are
-%      transferred, otherwise a NULL is returned.
-%
-%    o image: the image.
-%
-%    o x,y,columns,rows:  These values define the perimeter of a region of
-%      pixels.
-%
-*/
-MagickExport PixelPacket *SetImagePixels(Image *image,const ssize_t x,const ssize_t y,
-  const size_t columns,const size_t rows)
-{
-  return(QueueAuthenticPixels(image,x,y,columns,rows,&image->exception));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S e t M a g i c k R e g i s t r y                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetMagickRegistry() sets a blob into the registry and returns a unique ID.
-%  If an error occurs, -1 is returned.
-%
-%  The format of the SetMagickRegistry method is:
-%
-%      ssize_t SetMagickRegistry(const RegistryType type,const void *blob,
-%        const size_t length,ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o type: the registry type.
-%
-%    o blob: the address of a Binary Large OBject.
-%
-%    o length: For a registry type of ImageRegistryType use sizeof(Image)
-%      otherise the blob length in number of bytes.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport ssize_t SetMagickRegistry(const RegistryType type,const void *blob,
-  const size_t magick_unused(length),ExceptionInfo *exception)
-{
-  char
-    key[MaxTextExtent];
-
-  MagickBooleanType
-    status;
-
-  static ssize_t
-    id = 0;
-
-  (void) FormatMagickString(key,MaxTextExtent,"%.20g\n",(double) id);
-  status=SetImageRegistry(type,key,blob,exception);
-  if (status == MagickFalse)
-    return(-1);
-  return(id++);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S e t M o n i t o r H a n d l e r                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SetMonitorHandler() sets the monitor handler to the specified method
-%  and returns the previous monitor handler.
-%
-%  The format of the SetMonitorHandler method is:
-%
-%      MonitorHandler SetMonitorHandler(MonitorHandler handler)
-%
-%  A description of each parameter follows:
-%
-%    o handler: Specifies a pointer to a method to handle monitors.
-%
-*/
-
-MagickExport MonitorHandler GetMonitorHandler(void)
-{
-  return(monitor_handler);
-}
-
-MagickExport MonitorHandler SetMonitorHandler(MonitorHandler handler)
-{
-  MonitorHandler
-    previous_handler;
-
-  previous_handler=monitor_handler;
-  monitor_handler=handler;
-  return(previous_handler);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S h i f t I m a g e L i s t                                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ShiftImageList() removes an image from the beginning of the list.
-%
-%  Deprecated, replace with:
-%
-%    RemoveFirstImageFromList(images);
-%
-%  The format of the ShiftImageList method is:
-%
-%      Image *ShiftImageList(Image **images)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image list.
-%
-*/
-MagickExport Image *ShiftImageList(Image **images)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  return(RemoveFirstImageFromList(images));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-+  S i z e B l o b                                                            %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SizeBlob() returns the current length of the image file or blob.
-%
-%  Deprecated, replace with:
-%
-%    GetBlobSize(image);
-%
-%  The format of the SizeBlob method is:
-%
-%      off_t SizeBlob(Image *image)
-%
-%  A description of each parameter follows:
-%
-%    o size:  Method SizeBlob returns the current length of the image file
-%      or blob.
-%
-%    o image: the image.
-%
-*/
-MagickExport MagickOffsetType SizeBlob(Image *image)
-{
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.4.3");
-  return((MagickOffsetType) GetBlobSize(image));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S p l i c e I m a g e L i s t                                             %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SpliceImageList() removes the images designated by offset and length from
-%  the list and replaces them with the specified list.
-%
-%  The format of the SpliceImageList method is:
-%
-%      Image *SpliceImageList(Image *images,const ssize_t offset,
-%        const size_t length,const Image *splices,
-%        ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image list.
-%
-%    o offset: the position within the list.
-%
-%    o length: the length of the image list to remove.
-%
-%    o splice: Replace the removed image list with this list.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *SpliceImageList(Image *images,const ssize_t offset,
-  const size_t length,const Image *splices,ExceptionInfo *exception)
-{
-  Image
-    *clone;
-
-  register ssize_t
-    i;
-
-  if (images->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  clone=CloneImageList(splices,exception);
-  while (GetPreviousImageInList(images) != (Image *) NULL)
-    images=GetPreviousImageInList(images);
-  for (i=0; i < offset; i++)
-  {
-    if (GetNextImageInList(images) == (Image *) NULL)
-      return((Image *) NULL);
-    images=GetNextImageInList(images);
-  }
-  (void) SpliceImageIntoList(&images,length,clone);
-  return(images);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S t r i p                                                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  Strip() strips any whitespace or quotes from the beginning and end of a
-%  string of characters.
-%
-%  The format of the Strip method is:
-%
-%      void Strip(char *message)
-%
-%  A description of each parameter follows:
-%
-%    o message: Specifies an array of characters.
-%
-*/
-MagickExport void Strip(char *message)
-{
-  register char
-    *p,
-    *q;
-
-  assert(message != (char *) NULL);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  if (*message == '\0')
-    return;
-  if (strlen(message) == 1)
-    return;
-  p=message;
-  while (isspace((int) ((unsigned char) *p)) != 0)
-    p++;
-  if ((*p == '\'') || (*p == '"'))
-    p++;
-  q=message+strlen(message)-1;
-  while ((isspace((int) ((unsigned char) *q)) != 0) && (q > p))
-    q--;
-  if (q > p)
-    if ((*q == '\'') || (*q == '"'))
-      q--;
-  (void) CopyMagickMemory(message,p,(size_t) (q-p+1));
-  message[q-p+1]='\0';
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S y n c C a c h e V i e w                                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SyncCacheView() saves the cache view pixels to the in-memory or disk
-%  cache.  It returns MagickTrue if the pixel region is synced, otherwise
-%  MagickFalse.
-%
-%  Deprecated, replace with:
-%
-%    SyncCacheViewAuthenticPixels(cache_view,GetCacheViewException(cache_view));
-%
-%  The format of the SyncCacheView method is:
-%
-%      MagickBooleanType SyncCacheView(CacheView *cache_view)
-%
-%  A description of each parameter follows:
-%
-%    o cache_view: the cache view.
-%
-*/
-MagickExport MagickBooleanType SyncCacheView(CacheView *cache_view)
-{
-  MagickBooleanType
-    status;
-
-  status=SyncCacheViewAuthenticPixels(cache_view,
-    GetCacheViewException(cache_view));
-  return(status);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S y n c C a c h e V i e w P i x e l s                                     %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SyncCacheViewPixels() saves the cache view pixels to the in-memory
-%  or disk cache.  It returns MagickTrue if the pixel region is flushed,
-%  otherwise MagickFalse.
-%
-%  Deprecated, replace with:
-%
-%    SyncCacheViewAuthenticPixels(cache_view,GetCacheViewException(cache_view));
-%
-%  The format of the SyncCacheViewPixels method is:
-%
-%      MagickBooleanType SyncCacheViewPixels(CacheView *cache_view)
-%
-%  A description of each parameter follows:
-%
-%    o cache_view: the cache view.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport MagickBooleanType SyncCacheViewPixels(CacheView *cache_view)
-{
-  MagickBooleanType
-    status;
-
-  status=SyncCacheViewAuthenticPixels(cache_view,
-    GetCacheViewException(cache_view));
-  return(status);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   S y n c I m a g e P i x e l s                                             %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  SyncImagePixels() saves the image pixels to the in-memory or disk cache.
-%  The method returns MagickTrue if the pixel region is synced, otherwise
-%  MagickFalse.
-%
-%  Deprecated, replace with:
-%
-%    SyncAuthenticPixels(image,&image->exception);
-%
-%  The format of the SyncImagePixels() method is:
-%
-%      MagickBooleanType SyncImagePixels(Image *image)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-*/
-MagickExport MagickBooleanType SyncImagePixels(Image *image)
-{
-  return(SyncAuthenticPixels(image,&image->exception));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%  T e m p o r a r y F i l e n a m e                                          %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  TemporaryFilename() replaces the contents of path by a unique path name.
-%
-%  The format of the TemporaryFilename method is:
-%
-%      void TemporaryFilename(char *path)
-%
-%  A description of each parameter follows.
-%
-%   o  path:  Specifies a pointer to an array of characters.  The unique path
-%      name is returned in this array.
-%
-*/
-MagickExport void TemporaryFilename(char *path)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.6");
-  (void) AcquireUniqueFilename(path);
-  (void) RelinquishUniqueFileResource(path);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     T h r e s h o l d I m a g e                                             %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ThresholdImage() changes the value of individual pixels based on
-%  the intensity of each pixel compared to threshold.  The result is a
-%  high-contrast, two color image.
-%
-%  The format of the ThresholdImage method is:
-%
-%      unsigned int ThresholdImage(Image *image,const double threshold)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o threshold: Define the threshold value
-%
-*/
-MagickExport unsigned int ThresholdImage(Image *image,const double threshold)
-{
-#define ThresholdImageTag  "Threshold/Image"
-
-  IndexPacket
-    index;
-
-  ssize_t
-    y;
-
-  /*
-    Threshold image.
-  */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.7");
-  if (!AcquireImageColormap(image,2))
-    ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
-      "UnableToThresholdImage");
-  for (y=0; y < (ssize_t) image->rows; y++)
-  {
-    register IndexPacket
-      *restrict indexes;
-
-    register ssize_t
-      x;
+#define UpdatePixelViewTag  "PixelView/Update"
 
-    register PixelPacket
-      *restrict q;
-
-    q=GetAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-    if (q == (PixelPacket *) NULL)
-      break;
-    indexes=GetAuthenticIndexQueue(image);
-    for (x=0; x < (ssize_t) image->columns; x++)
-    {
-      index=(IndexPacket) ((MagickRealType) PixelIntensityToQuantum(q) <=
-        threshold ? 0 : 1);
-      SetIndexPixelComponent(indexes+x,index);
-      SetRedPixelComponent(q,image->colormap[(ssize_t) index].red);
-      SetGreenPixelComponent(q,image->colormap[(ssize_t) index].green);
-      SetBluePixelComponent(q,image->colormap[(ssize_t) index].blue);
-      q++;
-    }
-    if (!SyncAuthenticPixels(image,&image->exception))
-      break;
-  }
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     T h r e s h o l d I m a g e C h a n n e l                               %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ThresholdImageChannel() changes the value of individual pixels based on
-%  the intensity of each pixel channel.  The result is a high-contrast image.
-%
-%  The format of the ThresholdImageChannel method is:
-%
-%      unsigned int ThresholdImageChannel(Image *image,const char *threshold)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o threshold: define the threshold values.
-%
-*/
-MagickExport unsigned int ThresholdImageChannel(Image *image,
-  const char *threshold)
-{
-#define ThresholdImageTag  "Threshold/Image"
+  ExceptionInfo
+    *exception;
 
-  MagickPixelPacket
-    pixel;
+  Image
+    *source_image;
 
-  GeometryInfo
-    geometry_info;
+  MagickBooleanType
+    status;
 
-  IndexPacket
-    index;
+  MagickOffsetType
+    progress;
 
   ssize_t
     y;
 
-  unsigned int
-    flags;
-
-  /*
-    Threshold image.
-  */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  if (threshold == (const char *) NULL)
-    return(MagickTrue);
-  if (SetImageStorageClass(image,DirectClass) == MagickFalse)
+  assert(source != (PixelView *) NULL);
+  assert(source->signature == WandSignature);
+  if (update == (UpdatePixelViewMethod) NULL)
     return(MagickFalse);
-  flags=ParseGeometry(threshold,&geometry_info);
-  pixel.red=geometry_info.rho;
-  if (flags & SigmaValue)
-    pixel.green=geometry_info.sigma;
-  else
-    pixel.green=pixel.red;
-  if (flags & XiValue)
-    pixel.blue=geometry_info.xi;
-  else
-    pixel.blue=pixel.red;
-  if (flags & PsiValue)
-    pixel.opacity=geometry_info.psi;
-  else
-    pixel.opacity=(MagickRealType) OpaqueOpacity;
-  if (flags & PercentValue)
-    {
-      pixel.red*=QuantumRange/100.0f;
-      pixel.green*=QuantumRange/100.0f;
-      pixel.blue*=QuantumRange/100.0f;
-      pixel.opacity*=QuantumRange/100.0f;
-    }
-  if (!(flags & SigmaValue))
-    {
-      if (!AcquireImageColormap(image,2))
-        ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
-          "UnableToThresholdImage");
-      if (pixel.red == 0)
-        (void) GetImageDynamicThreshold(image,2.0,2.0,&pixel,&image->exception);
-    }
-  for (y=0; y < (ssize_t) image->rows; y++)
+  source_image=source->wand->images;
+  if (SetImageStorageClass(source_image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  status=MagickTrue;
+  progress=0;
+  exception=source->exception;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=source->region.y; y < (ssize_t) source->region.height; y++)
   {
+    const int
+      id = GetOpenMPThreadId();
+
     register IndexPacket
       *restrict indexes;
 
@@ -6677,417 +3037,53 @@ MagickExport unsigned int ThresholdImageChannel(Image *image,
       x;
 
     register PixelPacket
-      *restrict q;
+      *restrict pixels;
 
-    q=GetAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-    if (q == (PixelPacket *) NULL)
-      break;
-    indexes=GetAuthenticIndexQueue(image);
-    if (IsMagickGray(&pixel) != MagickFalse)
-      for (x=0; x < (ssize_t) image->columns; x++)
+    if (status == MagickFalse)
+      continue;
+    pixels=GetCacheViewAuthenticPixels(source->view,source->region.x,y,
+      source->region.width,1,exception);
+    if (pixels == (PixelPacket *) NULL)
       {
-        index=(IndexPacket) ((MagickRealType)
-          PixelIntensityToQuantum(q) <= pixel.red ? 0 : 1);
-        SetIndexPixelComponent(indexes+x,index);
-        SetRedPixelComponent(q,image->colormap[(ssize_t) index].red);
-        SetGreenPixelComponent(q,image->colormap[(ssize_t) index].green);
-        SetBluePixelComponent(q,image->colormap[(ssize_t) index].blue);
-        q++;
+        InheritException(source->exception,GetCacheViewException(
+          source->view));
+        status=MagickFalse;
+        continue;
       }
-    else
-      for (x=0; x < (ssize_t) image->columns; x++)
+    indexes=GetCacheViewAuthenticIndexQueue(source->view);
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      PixelSetQuantumColor(source->pixel_wands[id][x],pixels+x);
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        PixelSetBlackQuantum(source->pixel_wands[id][x],
+          GetIndexPixelComponent(indexes+x));
+    if (update(source,context) == MagickFalse)
+      status=MagickFalse;
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      PixelGetQuantumColor(source->pixel_wands[id][x],pixels+x);
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        SetIndexPixelComponent(indexes+x,PixelGetBlackQuantum(
+          source->pixel_wands[id][x]));
+    if (SyncCacheViewAuthenticPixels(source->view,exception) == MagickFalse)
       {
-        SetRedPixelComponent(q,q->red <= pixel.red ? 0 : QuantumRange);
-        SetGreenPixelComponent(q,q->green <= pixel.green ? 0 : QuantumRange);
-        SetBluePixelComponent(q,q->blue <= pixel.blue ? 0 : QuantumRange);
-        SetOpacityPixelComponent(q,q->opacity <= pixel.opacity ? 0 :
-          QuantumRange);
-        q++;
+        InheritException(source->exception,GetCacheViewException(source->view));
+        status=MagickFalse;
       }
-    if (!SyncAuthenticPixels(image,&image->exception))
-      break;
-  }
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                              %
-%                                                                              %
-%                                                                              %
-+     T r a n s f o r m C o l o r s p a c e                                    %
-%                                                                              %
-%                                                                              %
-%                                                                              %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  TransformColorspace() converts the image to a specified colorspace.
-%  If the image is already in the requested colorspace, no work is performed.
-%  Note that the current colorspace is stored in the image colorspace member.
-%  The transformation matrices are not necessarily the standard ones: the
-%  weights are rescaled to normalize the range of the transformed values to
-%  be [0..QuantumRange].
-%
-%  Deprecated, replace with:
-%
-%    TransformImageColorspace(image,colorspace);
-%
-%  The format of the TransformColorspace method is:
-%
-%      unsigned int (void) TransformColorspace(Image *image,
-%        const ColorspaceType colorspace)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image to transform
-%
-%    o colorspace: the desired colorspace.
-%
-*/
-MagickExport unsigned int TransformColorspace(Image *image,
-  const ColorspaceType colorspace)
-{
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.6");
-  return(TransformImageColorspace(image,colorspace));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   T r a n s f o r m H S L                                                   %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  TransformHSL() converts a (red, green, blue) to a (hue, saturation,
-%  lightness) triple.
-%
-%  The format of the TransformHSL method is:
-%
-%      void TransformHSL(const Quantum red,const Quantum green,
-%        const Quantum blue,double *hue,double *saturation,double *lightness)
-%
-%  A description of each parameter follows:
-%
-%    o red, green, blue: A Quantum value representing the red, green, and
-%      blue component of a pixel..
-%
-%    o hue, saturation, lightness: A pointer to a double value representing a
-%      component of the HSL color space.
-%
-*/
-
-static inline double MagickMin(const double x,const double y)
-{
-  if (x < y)
-    return(x);
-  return(y);
-}
-
-MagickExport void TransformHSL(const Quantum red,const Quantum green,
-  const Quantum blue,double *hue,double *saturation,double *lightness)
-{
-  MagickRealType
-    b,
-    delta,
-    g,
-    max,
-    min,
-    r;
-
-  /*
-    Convert RGB to HSL colorspace.
-  */
-  assert(hue != (double *) NULL);
-  assert(saturation != (double *) NULL);
-  assert(lightness != (double *) NULL);
-  r=QuantumScale*red;
-  g=QuantumScale*green;
-  b=QuantumScale*blue;
-  max=MagickMax(r,MagickMax(g,b));
-  min=MagickMin(r,MagickMin(g,b));
-  *hue=0.0;
-  *saturation=0.0;
-  *lightness=(double) ((min+max)/2.0);
-  delta=max-min;
-  if (delta == 0.0)
-    return;
-  *saturation=(double) (delta/((*lightness < 0.5) ? (min+max) :
-    (2.0-max-min)));
-  if (r == max)
-    *hue=(double) (g == min ? 5.0+(max-b)/delta : 1.0-(max-g)/delta);
-  else
-    if (g == max)
-      *hue=(double) (b == min ? 1.0+(max-r)/delta : 3.0-(max-b)/delta);
-    else
-      *hue=(double) (r == min ? 3.0+(max-g)/delta : 5.0-(max-r)/delta);
-  *hue/=6.0;
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   T r a n s l a t e T e x t                                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  TranslateText() replaces any embedded formatting characters with the
-%  appropriate image attribute and returns the translated text.
-%
-%  Deprecated, replace with:
-%
-%    InterpretImageProperties(image_info,image,embed_text);
-%
-%  The format of the TranslateText method is:
-%
-%      char *TranslateText(const ImageInfo *image_info,Image *image,
-%        const char *embed_text)
-%
-%  A description of each parameter follows:
-%
-%    o image_info: the image info.
-%
-%    o image: the image.
-%
-%    o embed_text: the address of a character string containing the embedded
-%      formatting characters.
-%
-*/
-MagickExport char *TranslateText(const ImageInfo *image_info,Image *image,
-  const char *embed_text)
-{
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.2.6");
-  return(InterpretImageProperties(image_info,image,embed_text));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%     T r a n s p a r e n t I m a g e                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  TransparentImage() changes the opacity value associated with any pixel
-%  that matches color to the value defined by opacity.
-%
-%  By default color must match a particular pixel color exactly.  However,
-%  in many cases two colors may differ by a small amount.  Fuzz defines
-%  how much tolerance is acceptable to consider two colors as the same.
-%  For example, set fuzz to 10 and the color red at intensities of 100 and
-%  102 respectively are now interpreted as the same color.
-%
-%  The format of the TransparentImage method is:
-%
-%      MagickBooleanType TransparentImage(Image *image,
-%        const PixelPacket target,const Quantum opacity)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o target: the RGB value of the target color.
-%
-%    o opacity: the replacement opacity value.
-%
-*/
-MagickExport MagickBooleanType TransparentImage(Image *image,
-  const PixelPacket target,const Quantum opacity)
-{
-#define TransparentImageTag  "Transparent/Image"
-
-  MagickBooleanType
-    proceed;
-
-  ssize_t
-    y;
-
-  /*
-    Make image color transparent.
-  */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v6.1.0");
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  if (image->matte == MagickFalse)
-    (void) SetImageAlphaChannel(image,OpaqueAlphaChannel);
-  for (y=0; y < (ssize_t) image->rows; y++)
-  {
-    register ssize_t
-      x;
-
-    register PixelPacket
-      *restrict q;
+    if (source_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
 
-    q=GetAuthenticPixels(image,0,y,image->columns,1,&image->exception);
-    if (q == (PixelPacket *) NULL)
-      break;
-    for (x=0; x < (ssize_t) image->columns; x++)
-    {
-      if (IsColorSimilar(image,q,&target) != MagickFalse)
-        q->opacity=opacity;
-      q++;
-    }
-    if (SyncAuthenticPixels(image,&image->exception) == MagickFalse)
-      break;
-    proceed=SetImageProgress(image,TransparentImageTag,(MagickOffsetType) y,
-      image->rows);
-    if (proceed == MagickFalse)
-      break;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickWand_UpdatePixelViewIterator)
+#endif
+        proceed=SetImageProgress(source_image,UpdatePixelViewTag,progress++,
+          source->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
   }
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   U n s h i f t I m a g e L i s t                                           %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  UnshiftImageList() adds the image to the beginning of the list.
-%
-%  Deprecated, replace with:
-%
-%    PrependImageToList(images,CloneImageList(image,exception));
-%
-%  The format of the UnshiftImageList method is:
-%
-%      unsigned int UnshiftImageList(Image *images,const Image *image,
-%        ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o images: the image list.
-%
-%    o image: the image.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport unsigned int UnshiftImageList(Image **images,const Image *image,
-  ExceptionInfo *exception)
-{
-  (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.5.2");
-  PrependImageToList(images,CloneImageList(image,exception));
-  return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-+   V a l i d a t e C o l o r m a p I n d e x                                 %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ValidateColormapIndex() validates the colormap index.  If the index does
-%  not range from 0 to the number of colors in the colormap an exception
-%  issued and 0 is returned.
-%
-%  Deprecated, replace with:
-%
-%    ConstrainColormapIndex(image,index);
-%
-%  The format of the ValidateColormapIndex method is:
-%
-%      IndexPacket ValidateColormapIndex(Image *image,const unsigned int index)
-%
-%  A description of each parameter follows:
-%
-%    o index: Method ValidateColormapIndex returns colormap index if it is
-%      valid other an exception issued and 0 is returned.
-%
-%    o image: the image.
-%
-%    o index: This integer is the colormap index.
-%
-*/
-MagickExport IndexPacket ValidateColormapIndex(Image *image,
-  const size_t index)
-{
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(DeprecateEvent,GetMagickModule(),"last use: v5.4.4");
-  return(ConstrainColormapIndex(image,index));
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%   Z o o m I m a g e                                                         %
-%                                                                             %
-%                                                                             %
-%                                                                             %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  ZoomImage() creates a new image that is a scaled size of an existing one.
-%  It allocates the memory necessary for the new Image structure and returns a
-%  pointer to the new image.  The Point filter gives fast pixel replication,
-%  Triangle is equivalent to bi-linear interpolation, and Mitchel giver slower,
-%  very high-quality results.  See Graphic Gems III for details on this
-%  algorithm.
-%
-%  The filter member of the Image structure specifies which image filter to
-%  use. Blur specifies the blur factor where > 1 is blurry, < 1 is sharp.
-%
-%  The format of the ZoomImage method is:
-%
-%      Image *ZoomImage(const Image *image,const size_t columns,
-%        const size_t rows,ExceptionInfo *exception)
-%
-%  A description of each parameter follows:
-%
-%    o image: the image.
-%
-%    o columns: An integer that specifies the number of columns in the zoom
-%      image.
-%
-%    o rows: An integer that specifies the number of rows in the scaled
-%      image.
-%
-%    o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport Image *ZoomImage(const Image *image,const size_t columns,
-  const size_t rows,ExceptionInfo *exception)
-{
-  Image
-    *zoom_image;
-
-  assert(image != (const Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  assert(exception != (ExceptionInfo *) NULL);
-  assert(exception->signature == MagickSignature);
-  zoom_image=ResizeImage(image,columns,rows,image->filter,image->blur,
-    exception);
-  return(zoom_image);
+  return(status);
 }
 #endif
index 3e6da4f4a44e9b6e8459f3f126e66aee6f86c101..ebc40dc50e8dc9ddad5ffaa07432eb63fcac1e25 100644 (file)
@@ -31,7 +31,7 @@ extern "C" {
 #define ClampIndexPixelComponent(indexes) ClampToQuantum(*(indexes))
 #define ClampOpacityPixelComponent(pixel) ClampToQuantum((pixel)->opacity)
 #define GetAlphaPixelComponent(pixel) (QuantumRange-(pixel)->opacity)
-#define GetBlackPixelComponent(index) (*(index))
+#define GetBlackPixelComponent(indexes) (*(indexes))
 #define GetBluePixelComponent(pixel) ((pixel)->blue)
 #define GetCbPixelComponent(pixel) ((pixel)->green)
 #define GetCrPixelComponent(pixel) ((pixel)->blue)
@@ -47,7 +47,7 @@ extern "C" {
 #define GetYellowPixelComponent(pixel) ((pixel)->blue)
 #define SetAlphaPixelComponent(pixel,value) \
   ((pixel)->opacity=(Quantum) (QuantumRange-(value)))
-#define SetBlackPixelComponent(index,value) (*(index)=(Quantum) (value))
+#define SetBlackPixelComponent(indexes,value) (*(indexes)=(Quantum) (value))
 #define SetBluePixelComponent(pixel,value) ((pixel)->blue=(Quantum) (value))
 #define SetCbPixelComponent(pixel,value) ((pixel)->green=(Quantum) (value))
 #define SetCrPixelComponent(pixel,value) ((pixel)->blue=(Quantum) (value))
index 6e3fde1cd2b755ad58db06ba8476dde7d45290fe..b9dd79217e7d435037e7206af2d2a3e03b5084b9 100644 (file)
@@ -31,7 +31,7 @@ extern "C" {
 #define MagickLibVersion  0x669
 #define MagickLibVersionText  "6.6.9"
 #define MagickLibVersionNumber  4,0,1
-#define MagickLibAddendum  "-8"
+#define MagickLibAddendum  "-9"
 #define MagickLibInterface  4
 #define MagickLibMinInterface  4
 #define MagickReleaseDate  "2011-05-04"
index 6e6f7cc817575a96fa30315fa9231b650d402725..90216a4f86aeead3b226dd02ee1201556c322311 100644 (file)
@@ -12,7 +12,7 @@ PACKAGE_NAME='ImageMagick'
 # PACKAGE_NAME (e.g. "1.0.0").
 PACKAGE_VERSION='6.6.9'
 PACKAGE_LIB_VERSION="0x669"
-PACKAGE_RELEASE="8"
+PACKAGE_RELEASE="9"
 PACKAGE_LIB_VERSION_NUMBER="6,6,9,${PACKAGE_RELEASE}"
 PACKAGE_RELEASE_DATE=`date +%F`
 PACKAGE_STRING="$PACKAGE_NAME $PACKAGE_VERSION"
index 722940de0c94ac2853c20bcc08890ad3672fa8df..c473b6e7466759e09d3143358e7bbde9bc6af323 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index 6b136e4c9e58c821eecbf4be6c317a3e5ea1f4b0..9b56a182d0b6ee2d7763de337478bc70c10f8efa 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
 
 <p>The configure script looks at your environment and decides what it can cobble together to get ImageMagick compiled and installed on your system.  This includes finding a compiler, where your compiler header files are located (e.g. stdlib.h), and if any delegate libraries are available for ImageMagick to use (e.g. JPEG, PNG, TIFF, etc.).  If you are willing to accept configure's default options, and build from within the source directory, you can simply type:</p>
 
-<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>cd ImageMagick-6.6.9-7</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>./configure</span></p>
+<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>cd ImageMagick-6.6.9-8</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>./configure</span></p>
 <p>Watch the configure script output to verify that it finds everything that
  you think it should.  Pay particular attention to the last lines of the script output.  For example, here is a recent report from our system:</p>
 
@@ -573,7 +573,7 @@ Options used to compile and link:
        <div class="doc-section">
          <p><a href="../www/download.html">Download</a> the ImageMagick source distribution and verify the distribution against its <a href="http://www.imagemagick.org/download/digest.rdf">message digest</a>.</p>
          <p>Unpack and change into the top-level ImageMagick directory:</p>
-               <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>tar xvfz ImageMagick-6.6.9-7.tar.gz</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>cd ImageMagick-6.6.9-7</span></p>    <p>Configure ImageMagick:</p>
+               <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>tar xvfz ImageMagick-6.6.9-8.tar.gz</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>cd ImageMagick-6.6.9-8</span></p>    <p>Configure ImageMagick:</p>
        <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>./configure --prefix=/opt --with-quantum-depth=16 \ <br/>
                --disable-dependency-tracking --with-x=yes \ <br/>
                --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib/ \ <br/>
@@ -593,7 +593,7 @@ Options used to compile and link:
 
 <p>Although you can download and install delegate libraries yourself, many are already available in the <a href="http://gnuwin32.sourceforge.net/">GnuWin32</a> distribution.  Download and install whichever delegate libraries you require such as JPEG, PNG, TIFF, etc.  Make sure you specify the development headers when you install a package.  Next type,</p>
 
-<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>tar jxvf ImageMagick-6.6.9-?.tar.bz2</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>cd ImageMagick-6.6.9-7</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>export CPPFLAGS="-Ic:/Progra~1/GnuWin32/include"</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>export LDFLAGS="-Lc:/Progra~1/GnuWin32/lib"</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>./configure --without-perl</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>make</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>sudo make install</span></p></div>
+<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>tar jxvf ImageMagick-6.6.9-?.tar.bz2</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>cd ImageMagick-6.6.9-8</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>export CPPFLAGS="-Ic:/Progra~1/GnuWin32/include"</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>export LDFLAGS="-Lc:/Progra~1/GnuWin32/lib"</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>./configure --without-perl</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>make</span><span class='crtout'></span><span class="crtprompt"> $magick&gt; </span><span class='crtin'>sudo make install</span></p></div>
 
 <h2><a id="problems"></a>Dealing with Unexpected Problems</h2>
 <div class="doc-section">
index 7ad53daeb86cacb6ade4cb70f5f98609019dae88..67d8eb3eaaf7467b527ff514f1a6b7488d5770c7 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
 
        <ol>
        <li>Double-click on
-       <kbd>VisualMagick/bin/ImageMagick-6.6.9-7-Q16-windows-dll.exe</kbd>
+       <kbd>VisualMagick/bin/ImageMagick-6.6.9-8-Q16-windows-dll.exe</kbd>
        to launch the ImageMagick binary distribution.</li>
        <li>Complete the installer screens to install ImageMagick on your system.</li>
        </ol>
index 12f5984858a62014fac73f6b7480f30b35a94673..3876ed28c2698146b19feeab8e0d52279d43eb4c 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 36d2521a2dadbc90e83032a2ebd35d75b4ab2762..4c33b75dbb0d01c1c685142314d2e0cfe18e44ce 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 8e88eccbdc314db13d67e5509fd3ed8798539c2d..f515d6586860caa9160be1f20d861ab24699377a 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index d48d0d961cb0421033e5672424a3e03121fd301a..2b1de0b52c0b5a7bf0f60891e5fc62fa9d324893 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 32cea932cf450dc6ec48bfe817bbca3a4295de5f..27bc033138c4982aabbf0523ab3f0a3e0d73095b 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
index 966ce54a4b4b53ad7445d9efe9b0a3901bb6c81a..b38a4d652f8667a6ab4bf4cabeca6b511f32560f 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 371e62533940a1af6f1c11144f7513db32442b03..d4e1dcfeb32524de6651169409f75743f8b307f0 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
 </div>
 </div>
 </div>
index c27c0c2326a4f5f9b03c62c4798ffb639e133f7b..6cec81e294b3ea17b69099e19a98445bef57021f 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
 </div>
 </div>
 </div>
index df36cbd9c08b0821168bcad5c3e7c3f443c50d31..03360b8c0b6199d323dccee1e9dc6a79606d76ae 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
index 63d884fa74021b327d5d46c412dded561172110d..d2b52bf9aaea5b7f7461c4d203bbe4f1b2cd7030 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
 </div>
 </div>
 </div>
index 2fcdab6448cd1393351919689614ef522f9e4cbd..16c7a90ef2913fc958cbe63229f0c9c7d84b9817 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
 </div>
 </div>
 </div>
index 711721c1aa8dec1b8f762a68c0e782c5b99d1faf..c7ae34ae0937b5365da2a3302adb3e798f7687e8 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 07f8f2ac921398ce3baff82ccfd908f8621fa03b..8b222a40076b4c34b4c8e76b4c0e447274498041 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
 </div>
 </div>
 </div>
index 0a3a535aa96680ece0fe5b03ee98de72de39d01f..cc916a9a2b889c123d07026cc02bb5012a9d54e0 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index 07d8058e31db54d3e08e0940155945f3bf0b8c6f..f80dba778150a1421ed799443f22376bb56458fb 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
 <div class="main">\r
 \r
 <h1>Module deprecate Methods</h1>
-<p class="navigation-index">[<a href="#AcquireCacheViewIndexes">AcquireCacheViewIndexes</a> &bull; <a href="#AcquireCacheViewPixels">AcquireCacheViewPixels</a> &bull; <a href="#AcquireImagePixels">AcquireImagePixels</a> &bull; <a href="#AcquireIndexes">AcquireIndexes</a> &bull; <a href="#AcquireMemory">AcquireMemory</a> &bull; <a href="#AcquireOneCacheViewPixel">AcquireOneCacheViewPixel</a> &bull; <a href="#AcquireOneCacheViewVirtualPixel">AcquireOneCacheViewVirtualPixel</a> &bull; <a href="#AcquireOneMagickPixel">AcquireOneMagickPixel</a> &bull; <a href="#AcquireOnePixel">AcquireOnePixel</a> &bull; <a href="#AcquireOneVirtualPixel">AcquireOneVirtualPixel</a> &bull; <a href="#AcquirePixels">AcquirePixels</a> &bull; <a href="#AffinityImage">AffinityImage</a> &bull; <a href="#AffinityImages">AffinityImages</a> &bull; <a href="#AllocateImage">AllocateImage</a> &bull; <a href="#AllocateImageColormap">AllocateImageColormap</a> &bull; <a href="#AllocateNextImage">AllocateNextImage</a> &bull; <a href="#AllocateString">AllocateString</a> &bull; <a href="#AverageImages">AverageImages</a> &bull; <a href="#ChannelThresholdImage">ChannelThresholdImage</a> &bull; <a href="#ClipPathImage">ClipPathImage</a> &bull; <a href="#CloneImageAttributes">CloneImageAttributes</a> &bull; <a href="#CloneMemory">CloneMemory</a> &bull; <a href="#CloseCacheView">CloseCacheView</a> &bull; <a href="#ColorFloodfill">ColorFloodfill</a> &bull; <a href="#DeleteImageAttribute">DeleteImageAttribute</a> &bull; <a href="#DeleteImageList">DeleteImageList</a> &bull; <a href="#DeleteMagickRegistry">DeleteMagickRegistry</a> &bull; <a href="#DescribeImage">DescribeImage</a> &bull; <a href="#DestroyImageAttributes">DestroyImageAttributes</a> &bull; <a href="#DestroyImages">DestroyImages</a> &bull; <a href="#DestroyMagick">DestroyMagick</a> &bull; <a href="#DispatchImage">DispatchImage</a> &bull; <a href="#ExtractSubimageFromImageImage">ExtractSubimageFromImageImage</a> &bull; <a href="#FlattenImages">FlattenImages</a> &bull; <a href="#FormatImageAttribute">FormatImageAttribute</a> &bull; <a href="#FormatString">FormatString</a> &bull; <a href="#GetConfigureBlob">GetConfigureBlob</a> &bull; <a href="#GetCacheView">GetCacheView</a> &bull; <a href="#GetCacheViewIndexes">GetCacheViewIndexes</a> &bull; <a href="#GetCacheViewPixels">GetCacheViewPixels</a> &bull; <a href="#GetImageAttribute">GetImageAttribute</a> &bull; <a href="#GetImageClippingPathAttribute">GetImageClippingPathAttribute</a> &bull; <a href="#GetImageFromMagickRegistry">GetImageFromMagickRegistry</a> &bull; <a href="#GetMagickRegistry">GetMagickRegistry</a> &bull; <a href="#GetImageGeometry">GetImageGeometry</a> &bull; <a href="#GetImageList">GetImageList</a> &bull; <a href="#GetImageListIndex">GetImageListIndex</a> &bull; <a href="#GetImageListSize">GetImageListSize</a> &bull; <a href="#GetImagePixels">GetImagePixels</a> &bull; <a href="#GetIndexes">GetIndexes</a> &bull; <a href="#GetNextImage">GetNextImage</a> &bull; <a href="#GetNextImageAttribute">GetNextImageAttribute</a> &bull; <a href="#GetNumberScenes">GetNumberScenes</a> &bull; <a href="#GetOnePixel">GetOnePixel</a> &bull; <a href="#GetPixels">GetPixels</a> &bull; <a href="#GetPreviousImage">GetPreviousImage</a> &bull; <a href="#HSLTransform">HSLTransform</a> &bull; <a href="#IdentityAffine">IdentityAffine</a> &bull; <a href="#InitializeMagick">InitializeMagick</a> &bull; <a href="#InterpolatePixelColor">InterpolatePixelColor</a> &bull; <a href="#InterpretImageAttributes">InterpretImageAttributes</a> &bull; <a href="#LevelImageColor">LevelImageColor</a> &bull; <a href="#LiberateMemory">LiberateMemory</a> &bull; <a href="#LiberateSemaphoreInfo">LiberateSemaphoreInfo</a> &bull; <a href="#MagickIncarnate">MagickIncarnate</a> &bull; <a href="#MagickMonitor">MagickMonitor</a> &bull; <a href="#MapImage">MapImage</a> &bull; <a href="#MapImages">MapImages</a> &bull; <a href="#MatteFloodfill">MatteFloodfill</a> &bull; <a href="#MaximumImages">MaximumImages</a> &bull; <a href="#MinimumImages">MinimumImages</a> &bull; <a href="#MedianFilterImage">MedianFilterImage</a> &bull; <a href="#ModeImage">ModeImage</a> &bull; <a href="#MosaicImages">MosaicImages</a> &bull; <a href="#OpaqueImage">OpaqueImage</a> &bull; <a href="#OpenCacheView">OpenCacheView</a> &bull; <a href="#PaintFloodfill">PaintFloodfill</a> &bull; <a href="#PaintOpaqueImage">PaintOpaqueImage</a> &bull; <a href="#PaintTransparentImage">PaintTransparentImage</a> &bull; <a href="#ParseSizeGeometry">ParseSizeGeometry</a> &bull; <a href="#PopImageList">PopImageList</a> &bull; <a href="#PopImagePixels">PopImagePixels</a> &bull; <a href="#PostscriptGeometry">PostscriptGeometry</a> &bull; <a href="#PushImageList">PushImageList</a> &bull; <a href="#PushImagePixels">PushImagePixels</a> &bull; <a href="#QuantizationError">QuantizationError</a> &bull; <a href="#RandomChannelThresholdImage">RandomChannelThresholdImage</a> &bull; <a href="#ReacquireMemory">ReacquireMemory</a> &bull; <a href="#RecolorImage">RecolorImage</a> &bull; <a href="#ReduceNoiseImage">ReduceNoiseImage</a> &bull; <a href="#ResetImageAttributeIterator">ResetImageAttributeIterator</a> &bull; <a href="#SetCacheViewPixels">SetCacheViewPixels</a> &bull; <a href="#SetExceptionInfo">SetExceptionInfo</a> &bull; <a href="#SetImage">SetImage</a> &bull; <a href="#SetImageAttribute">SetImageAttribute</a> &bull; <a href="#SetImageList">SetImageList</a> &bull; <a href="#SetImagePixels">SetImagePixels</a> &bull; <a href="#SetMagickRegistry">SetMagickRegistry</a> &bull; <a href="#SetMonitorHandler">SetMonitorHandler</a> &bull; <a href="#ShiftImageList">ShiftImageList</a> &bull; <a href="#SpliceImageList">SpliceImageList</a> &bull; <a href="#Strip">Strip</a> &bull; <a href="#SyncCacheView">SyncCacheView</a> &bull; <a href="#SyncCacheViewPixels">SyncCacheViewPixels</a> &bull; <a href="#SyncImagePixels">SyncImagePixels</a> &bull; <a href="#TemporaryFilename">TemporaryFilename</a> &bull; <a href="#ThresholdImage">ThresholdImage</a> &bull; <a href="#ThresholdImageChannel">ThresholdImageChannel</a> &bull; <a href="#TransformHSL">TransformHSL</a> &bull; <a href="#TranslateText">TranslateText</a> &bull; <a href="#TransparentImage">TransparentImage</a> &bull; <a href="#UnshiftImageList">UnshiftImageList</a> &bull; <a href="#ZoomImage">ZoomImage</a>]</p>
+<p class="navigation-index">[<a href="#MagickAverageImages">MagickAverageImages</a> &bull; <a href="#ClonePixelView">ClonePixelView</a> &bull; <a href="#DestroyPixelView">DestroyPixelView</a> &bull; <a href="#DuplexTransferPixelViewIterator">DuplexTransferPixelViewIterator</a> &bull; <a href="#GetPixelViewException">GetPixelViewException</a> &bull; <a href="#GetPixelViewHeight">GetPixelViewHeight</a> &bull; <a href="#GetPixelViewIterator">GetPixelViewIterator</a> &bull; <a href="#GetPixelViewPixels">GetPixelViewPixels</a> &bull; <a href="#GetPixelViewWand">GetPixelViewWand</a> &bull; <a href="#GetPixelViewWidth">GetPixelViewWidth</a> &bull; <a href="#GetPixelViewX">GetPixelViewX</a> &bull; <a href="#GetPixelViewY">GetPixelViewY</a> &bull; <a href="#IsPixelView">IsPixelView</a> &bull; <a href="#MagickClipPathImage">MagickClipPathImage</a> &bull; <a href="#DrawGetFillAlpha">DrawGetFillAlpha</a> &bull; <a href="#DrawGetStrokeAlpha">DrawGetStrokeAlpha</a> &bull; <a href="#DrawPeekGraphicWand">DrawPeekGraphicWand</a> &bull; <a href="#DrawPopGraphicContext">DrawPopGraphicContext</a> &bull; <a href="#DrawPushGraphicContext">DrawPushGraphicContext</a> &bull; <a href="#DrawSetFillAlpha">DrawSetFillAlpha</a> &bull; <a href="#DrawSetStrokeAlpha">DrawSetStrokeAlpha</a> &bull; <a href="#MagickColorFloodfillImage">MagickColorFloodfillImage</a> &bull; <a href="#MagickDescribeImage">MagickDescribeImage</a> &bull; <a href="#MagickFlattenImages">MagickFlattenImages</a> &bull; <a href="#MagickGetImageAttribute">MagickGetImageAttribute</a> &bull; <a href="#MagickGetImageMatte">MagickGetImageMatte</a> &bull; <a href="#MagickGetImagePixels">MagickGetImagePixels</a> &bull; <a href="#MagickGetImageSize">MagickGetImageSize</a> &bull; <a href="#MagickMapImage">MagickMapImage</a> &bull; <a href="#MagickMatteFloodfillImage">MagickMatteFloodfillImage</a> &bull; <a href="#MagickMedianFilterImage">MagickMedianFilterImage</a> &bull; <a href="#MagickMinimumImages">MagickMinimumImages</a> &bull; <a href="#MagickModeImage">MagickModeImage</a> &bull; <a href="#MagickMosaicImages">MagickMosaicImages</a> &bull; <a href="#MagickOpaqueImage">MagickOpaqueImage</a> &bull; <a href="#MagickPaintFloodfillImage">MagickPaintFloodfillImage</a> &bull; <a href="#MagickPaintOpaqueImage">MagickPaintOpaqueImage</a> &bull; <a href="#MagickPaintTransparentImage">MagickPaintTransparentImage</a> &bull; <a href="#MagickRecolorImage">MagickRecolorImage</a> &bull; <a href="#MagickReduceNoiseImage">MagickReduceNoiseImage</a> &bull; <a href="#MagickMaximumImages">MagickMaximumImages</a> &bull; <a href="#MagickSetImageAttribute">MagickSetImageAttribute</a> &bull; <a href="#MagickSetImageIndex">MagickSetImageIndex</a> &bull; <a href="#MagickTransparentImage">MagickTransparentImage</a> &bull; <a href="#MagickRegionOfInterestImage">MagickRegionOfInterestImage</a> &bull; <a href="#MagickSetImagePixels">MagickSetImagePixels</a> &bull; <a href="#MagickWriteImageBlob">MagickWriteImageBlob</a> &bull; <a href="#NewPixelView">NewPixelView</a> &bull; <a href="#NewPixelViewRegion">NewPixelViewRegion</a> &bull; <a href="#PixelGetNextRow">PixelGetNextRow</a> &bull; <a href="#PixelIteratorGetException">PixelIteratorGetException</a> &bull; <a href="#SetPixelViewIterator">SetPixelViewIterator</a> &bull; <a href="#TransferPixelViewIterator">TransferPixelViewIterator</a> &bull; <a href="#UpdatePixelViewIterator">UpdatePixelViewIterator</a>]</p>
 
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireCacheViewIndexes">AcquireCacheViewIndexes</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickAverageImages">MagickAverageImages</a></h2>
 <div class="doc-section">
 
-<p>AcquireCacheViewIndexes() returns the indexes associated with the specified view.</p>
+<p>MagickAverageImages() average a set of images.</p>
 
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetCacheViewVirtualIndexQueue(cache_view);
-</pre>
-
-<p>The format of the AcquireCacheViewIndexes method is:</p>
-
-<pre class="code">
-  const IndexPacket *AcquireCacheViewIndexes(const CacheView *cache_view)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>cache_view</h5>
-<p>the cache view.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireCacheViewPixels">AcquireCacheViewPixels</a></h2>
-<div class="doc-section">
-
-<p>AcquireCacheViewPixels() gets pixels from the in-memory or disk pixel cache as defined by the geometry parameters.   A pointer to the pixels is returned if the pixels are transferred, otherwise a NULL is returned.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetCacheViewVirtualPixels(cache_view,x,y,columns,rows,exception);
-</pre>
-
-<p>The format of the AcquireCacheViewPixels method is:</p>
-
-<pre class="code">
-  const PixelPacket *AcquireCacheViewPixels(const CacheView *cache_view,
-    const ssize_t x,const ssize_t y,const size_t columns,
-    const size_t rows,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>cache_view</h5>
-<p>the cache view.</p>
-
-<h5>x,y,columns,rows</h5>
-<p>These values define the perimeter of a region of pixels.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireImagePixels">AcquireImagePixels</a></h2>
-<div class="doc-section">
-
-<p>AcquireImagePixels() returns an immutable pixel region. If the region is successfully accessed, a pointer to it is returned, otherwise NULL is returned. The returned pointer may point to a temporary working copy of the pixels or it may point to the original pixels in memory. Performance is maximized if the selected region is part of one row, or one or more full rows, since there is opportunity to access the pixels in-place (without a copy) if the image is in RAM, or in a memory-mapped file.  The returned pointer should *never* be deallocated by the user.</p>
-
-<p>Pixels accessed via the returned pointer represent a simple array of type PixelPacket.  If the image type is CMYK or the storage class is PseudoClass, call GetAuthenticIndexQueue() after invoking GetAuthenticPixels() to access the black color component or to obtain the colormap indexes (of type IndexPacket) corresponding to the region.</p>
-
-<p>If you plan to modify the pixels, use GetAuthenticPixels() instead.</p>
-
-<p>Note, the AcquireImagePixels() and GetAuthenticPixels() methods are not thread-safe.  In a threaded environment, use GetCacheViewVirtualPixels() or GetCacheViewAuthenticPixels() instead.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetVirtualPixels(image,x,y,columns,rows,exception);
-</pre>
-
-<p>The format of the AcquireImagePixels() method is:</p>
-
-<pre class="code">
-  const PixelPacket *AcquireImagePixels(const Image *image,const ssize_t x,
-    const ssize_t y,const size_t columns,const size_t rows,
-    ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>x,y,columns,rows</h5>
-<p>These values define the perimeter of a region of pixels.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireIndexes">AcquireIndexes</a></h2>
-<div class="doc-section">
-
-<p>AcquireIndexes() returns the black channel or the colormap indexes associated with the last call to QueueAuthenticPixels() or GetVirtualPixels().  NULL is returned if the black channel or colormap indexes are not available.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetVirtualIndexQueue(image);
-</pre>
-
-<p>The format of the AcquireIndexes() method is:</p>
-
-<pre class="code">
-  const IndexPacket *AcquireIndexes(const Image *image)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>indexes</h5>
-<p>AcquireIndexes() returns the indexes associated with the last call to QueueAuthenticPixels() or GetVirtualPixels().</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireMemory">AcquireMemory</a></h2>
-<div class="doc-section">
-
-<p>AcquireMemory() returns a pointer to a block of memory at least size bytes suitably aligned for any use.</p>
-
-<p>The format of the AcquireMemory method is:</p>
-
-<pre class="code">
-  void *AcquireMemory(const size_t size)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>size</h5>
-<p>the size of the memory in bytes to allocate.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireOneCacheViewPixel">AcquireOneCacheViewPixel</a></h2>
-<div class="doc-section">
-
-<p>AcquireOneCacheViewPixel() returns a single pixel at the specified (x,y) location.  The image background color is returned if an error occurs.  If you plan to modify the pixel, use GetOneCacheViewAuthenticPixel() instead.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetOneCacheViewVirtualPixel(cache_view,x,y,pixel,exception);
-</pre>
-
-<p>The format of the AcquireOneCacheViewPixel method is:</p>
-
-<pre class="code">
-  MagickBooleanType AcquireOneCacheViewPixel(const CacheView *cache_view,
-    const ssize_t x,const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>cache_view</h5>
-<p>the cache view.</p>
-
-<h5>x,y</h5>
-<p>These values define the offset of the pixel.</p>
-
-<h5>pixel</h5>
-<p>return a pixel at the specified (x,y) location.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireOneCacheViewVirtualPixel">AcquireOneCacheViewVirtualPixel</a></h2>
-<div class="doc-section">
-
-<p>AcquireOneCacheViewVirtualPixel() returns a single pixel at the specified (x,y) location.  The image background color is returned if an error occurs. If you plan to modify the pixel, use GetOneCacheViewAuthenticPixel() instead.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetOneCacheViewVirtualMethodPixel(cache_view,virtual_pixel_method,
-  x,y,pixel,exception);
-</pre>
-
-<p>The format of the AcquireOneCacheViewPixel method is:</p>
+<p>The format of the MagickAverageImages method is:</p>
 
 <pre class="code">
-  MagickBooleanType AcquireOneCacheViewVirtualPixel(
-    const CacheView *cache_view,
-    const VirtualPixelMethod virtual_pixel_method,const ssize_t x,
-    const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+  MagickWand *MagickAverageImages(MagickWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>cache_view</h5>
-<p>the cache view.</p>
-
-<h5>virtual_pixel_method</h5>
-<p>the virtual pixel method.</p>
-
-<h5>x,y</h5>
-<p>These values define the offset of the pixel.</p>
-
-<h5>pixel</h5>
-<p>return a pixel at the specified (x,y) location.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireOneMagickPixel">AcquireOneMagickPixel</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ClonePixelView">ClonePixelView</a></h2>
 <div class="doc-section">
 
-<p>AcquireOneMagickPixel() returns a single pixel at the specified (x,y) location.  The image background color is returned if an error occurs.  If you plan to modify the pixel, use GetOnePixel() instead.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      MagickPixelPacket pixel;
-      GetOneVirtualMagickPixel(image,x,y,&pixel,exception);
-</pre>
+<p>ClonePixelView() makes a copy of the specified pixel view.</p>
 
-<p>The format of the AcquireOneMagickPixel() method is:</p>
+<p>The format of the ClonePixelView method is:</p>
 
 <pre class="code">
-  MagickPixelPacket AcquireOneMagickPixel(const Image image,const ssize_t x,
-    const ssize_t y,ExceptionInfo exception)
+  PixelView *ClonePixelView(const PixelView *pixel_view)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>x,y</h5>
-<p>These values define the location of the pixel to return.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireOnePixel">AcquireOnePixel</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DestroyPixelView">DestroyPixelView</a></h2>
 <div class="doc-section">
 
-<p>AcquireOnePixel() returns a single pixel at the specified (x,y) location. The image background color is returned if an error occurs.  If you plan to modify the pixel, use GetOnePixel() instead.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      PixelPacket pixel;
-      GetOneVirtualPixel(image,x,y,&pixel,exception);
-</pre>
+<p>DestroyPixelView() deallocates memory associated with a pixel view.</p>
 
-<p>The format of the AcquireOnePixel() method is:</p>
+<p>The format of the DestroyPixelView method is:</p>
 
 <pre class="code">
-  PixelPacket AcquireOnePixel(const Image image,const ssize_t x,
-    const ssize_t y,ExceptionInfo exception)
+  PixelView *DestroyPixelView(PixelView *pixel_view,
+    const size_t number_wands,const size_t number_threads)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
-<h5>x,y</h5>
-<p>These values define the location of the pixel to return.</p>
+<h5>number_wand</h5>
+<p>the number of pixel wands.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>number_threads</h5>
+<p>number of threads.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquireOneVirtualPixel">AcquireOneVirtualPixel</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DuplexTransferPixelViewIterator">DuplexTransferPixelViewIterator</a></h2>
 <div class="doc-section">
 
-<p>AcquireOneVirtualPixel() returns a single pixel at the specified (x,y) location as defined by specified pixel method.  The image background color is returned if an error occurs.  If you plan to modify the pixel, use GetOnePixel() instead.</p>
+<p>DuplexTransferPixelViewIterator() iterates over three pixel views in parallel and calls your transfer method for each scanline of the view.  The source and duplex pixel region is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension.  However, the destination pixel view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p>
 
-<p>Deprecated, replace with:</p>
+<p>Use this pragma:</p>
 
 <pre class="text">
-      PixelPacket pixel;
-      GetOneVirtualMethodPixel(image,virtual_pixel_method,x,y,&pixel,exception);
-</pre>
-
-<p>The format of the AcquireOneVirtualPixel() method is:</p>
-
-<pre class="code">
-  PixelPacket AcquireOneVirtualPixel(const Image image,
-    const VirtualPixelMethod virtual_pixel_method,const ssize_t x,
-    const ssize_t y,ExceptionInfo exception)
+      #pragma omp critical
 </pre>
 
-<p>A description of each parameter follows:</p>
-
-<h5>virtual_pixel_method</h5>
-<p>the virtual pixel method.</p>
+<p>to define a section of code in your callback transfer method that must be executed by a single thread at a time.</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>x,y</h5>
-<p>These values define the location of the pixel to return.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AcquirePixels">AcquirePixels</a></h2>
-<div class="doc-section">
-
-<p>AcquirePixels() returns the pixels associated with the last call to QueueAuthenticPixels() or GetVirtualPixels().</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetVirtualPixelQueue(image);
-</pre>
-
-<p>The format of the AcquirePixels() method is:</p>
+<p>The format of the DuplexTransferPixelViewIterator method is:</p>
 
 <pre class="code">
-  const PixelPacket *AcquirePixels(const Image image)
+  MagickBooleanType DuplexTransferPixelViewIterator(PixelView *source,
+    PixelView *duplex,PixelView *destination,
+    DuplexTransferPixelViewMethod transfer,void *context)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AffinityImage">AffinityImage</a></h2>
-<div class="doc-section">
-
-<p>AffinityImage() replaces the colors of an image with the closest color from a reference image.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      RemapImage(quantize_info,image,affinity_image);
-</pre>
-
-<p>The format of the AffinityImage method is:</p>
-
-<pre class="code">
-  MagickBooleanType AffinityImage(const QuantizeInfo *quantize_info,
-    Image *image,const Image *affinity_image)
-</pre>
+<h5>source</h5>
+<p>the source pixel view.</p>
 
-<p>A description of each parameter follows:</p>
+<h5>duplex</h5>
+<p>the duplex pixel view.</p>
 
-<h5>quantize_info</h5>
-<p>Specifies a pointer to an QuantizeInfo structure.</p>
+<h5>destination</h5>
+<p>the destination pixel view.</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>transfer</h5>
+<p>the transfer callback method.</p>
 
-<h5>affinity_image</h5>
-<p>the reference image.</p>
+<h5>context</h5>
+<p>the user defined context.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AffinityImages">AffinityImages</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixelViewException">GetPixelViewException</a></h2>
 <div class="doc-section">
 
-<p>AffinityImages() replaces the colors of a sequence of images with the closest color from a reference image.</p>
-
-<p>Deprecated, replace with:</p>
+<p>GetPixelViewException() returns the severity, reason, and description of any error that occurs when utilizing a pixel view.</p>
 
-<pre class="text">
-      RemapImages(quantize_info,images,affinity_image);
-</pre>
-
-<p>The format of the AffinityImage method is:</p>
+<p>The format of the GetPixelViewException method is:</p>
 
 <pre class="code">
-  MagickBooleanType AffinityImages(const QuantizeInfo *quantize_info,
-    Image *images,Image *affinity_image)
+  char *GetPixelViewException(const PixelWand *pixel_view,
+    ExceptionType *severity)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>quantize_info</h5>
-<p>Specifies a pointer to an QuantizeInfo structure.</p>
-
-<h5>images</h5>
-<p>the image sequence.</p>
+<h5>pixel_view</h5>
+<p>the pixel pixel_view.</p>
 
-<h5>affinity_image</h5>
-<p>the reference image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AllocateImage">AllocateImage</a></h2>
-<div class="doc-section">
-
-<p>AllocateImage() returns a pointer to an image structure initialized to default values.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      AcquireImage(image_info);
-</pre>
-
-<p>The format of the AllocateImage method is:</p>
-
-<pre class="code">
-  Image *AllocateImage(const ImageInfo *image_info)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image_info</h5>
-<p>Many of the image default values are set from this structure.  For example, filename, compression, depth, background color, and others.</p>
+<h5>severity</h5>
+<p>the severity of the error is returned here.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AllocateImageColormap">AllocateImageColormap</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixelViewHeight">GetPixelViewHeight</a></h2>
 <div class="doc-section">
 
-<p>AllocateImageColormap() allocates an image colormap and initializes it to a linear gray colorspace.  If the image already has a colormap, it is replaced.  AllocateImageColormap() returns MagickTrue if successful, otherwise MagickFalse if there is not enough memory.</p>
+<p>GetPixelViewHeight() returns the pixel view height.</p>
 
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      AcquireImageColormap(image,colors);
-</pre>
-
-<p>The format of the AllocateImageColormap method is:</p>
+<p>The format of the GetPixelViewHeight method is:</p>
 
 <pre class="code">
-  MagickBooleanType AllocateImageColormap(Image *image,
-    const size_t colors)
+  size_t GetPixelViewHeight(const PixelView *pixel_view)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>colors</h5>
-<p>the number of colors in the image colormap.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AllocateNextImage">AllocateNextImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixelViewIterator">GetPixelViewIterator</a></h2>
 <div class="doc-section">
 
-<p>AllocateNextImage() initializes the next image in a sequence to default values.  The next member of image points to the newly allocated image.  If there is a memory shortage, next is assigned NULL.</p>
+<p>GetPixelViewIterator() iterates over the pixel view in parallel and calls your get method for each scanline of the view.  The pixel region is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension.  Any updates to the pixels in your callback are ignored.</p>
 
-<p>Deprecated, replace with:</p>
+<p>Use this pragma:</p>
 
 <pre class="text">
-      AcquireNextImage(image_info,image);
-</pre>
-
-<p>The format of the AllocateNextImage method is:</p>
-
-<pre class="code">
-  void AllocateNextImage(const ImageInfo *image_info,Image *image)
+      #pragma omp critical
 </pre>
 
-<p>A description of each parameter follows:</p>
-
-<h5>image_info</h5>
-<p>Many of the image default values are set from this structure.  For example, filename, compression, depth, background color, and others.</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AllocateString">AllocateString</a></h2>
-<div class="doc-section">
-
-<p>AllocateString() allocates memory for a string and copies the source string to that memory location (and returns it).</p>
+<p>to define a section of code in your callback get method that must be executed by a single thread at a time.</p>
 
-<p>The format of the AllocateString method is:</p>
+<p>The format of the GetPixelViewIterator method is:</p>
 
 <pre class="code">
-  char *AllocateString(const char *source)
+  MagickBooleanType GetPixelViewIterator(PixelView *source,
+    GetPixelViewMethod get,void *context)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
 <h5>source</h5>
-<p>A character string.</p>
+<p>the source pixel view.</p>
 
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="AverageImages">AverageImages</a></h2>
-<div class="doc-section">
-
-<p>AverageImages() takes a set of images and averages them together.  Each image in the set must have the same width and height.  AverageImages() returns a single image with each corresponding pixel component of each image averaged.   On failure, a NULL image is returned and exception describes the reason for the failure.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      EvaluateImages(images,MeanEvaluateOperator,exception);
-</pre>
-
-<p>The format of the AverageImages method is:</p>
-
-<pre class="code">
-  Image *AverageImages(Image *images,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image sequence.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ChannelThresholdImage">ChannelThresholdImage</a></h2>
-<div class="doc-section">
-
-<p>ChannelThresholdImage() changes the value of individual pixels based on the intensity of each pixel channel.  The result is a high-contrast image.</p>
-
-<p>The format of the ChannelThresholdImage method is:</p>
-
-<pre class="code">
-  unsigned int ChannelThresholdImage(Image *image,const char *level)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>level</h5>
-<p>define the threshold values.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ClipPathImage">ClipPathImage</a></h2>
-<div class="doc-section">
-
-<p>ClipPathImage() sets the image clip mask based any clipping path information if it exists.</p>
-
-<p>Deprecated, replace with:</p>
+<h5>get</h5>
+<p>the get callback method.</p>
 
-<pre class="text">
-      ClipImagePath(image,pathname,inside);
-</pre>
-
-<p>The format of the ClipImage method is:</p>
-
-<pre class="code">
-  MagickBooleanType ClipPathImage(Image *image,const char *pathname,
-    const MagickBooleanType inside)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>pathname</h5>
-<p>name of clipping path resource. If name is preceded by #, use clipping path numbered by name.</p>
-
-<h5>inside</h5>
-<p>if non-zero, later operations take effect inside clipping path. Otherwise later operations take effect outside clipping path.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="CloneImageAttributes">CloneImageAttributes</a></h2>
-<div class="doc-section">
-
-<p>CloneImageAttributes() clones one or more image attributes.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      CloneImageProperties(image,clone_image);
-</pre>
-
-<p>The format of the CloneImageAttributes method is:</p>
-
-<pre class="code">
-  MagickBooleanType CloneImageAttributes(Image *image,
-    const Image *clone_image)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>clone_image</h5>
-<p>the clone image.</p>
+<h5>context</h5>
+<p>the user defined context.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="CloneMemory">CloneMemory</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixelViewPixels">GetPixelViewPixels</a></h2>
 <div class="doc-section">
 
-<p>CloneMemory() copies size bytes from memory area source to the destination. Copying between objects that overlap will take place correctly.  It returns destination.</p>
-
-<p>The format of the CloneMemory method is:</p>
-
-<pre class="code">
-  void *CloneMemory(void *destination,const void *source,
-    const size_t size)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>destination</h5>
-<p>the destination.</p>
-
-<h5>source</h5>
-<p>the source.</p>
-
-<h5>size</h5>
-<p>the size of the memory in bytes to allocate.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="CloseCacheView">CloseCacheView</a></h2>
-<div class="doc-section">
-
-<p>CloseCacheView() closes the specified view returned by a previous call to OpenCacheView().</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      DestroyCacheView(view_info);
-</pre>
-
-<p>The format of the CloseCacheView method is:</p>
-
-<pre class="code">
-  CacheView *CloseCacheView(CacheView *view_info)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>view_info</h5>
-<p>the address of a structure of type CacheView.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ColorFloodfill">ColorFloodfill</a></h2>
-<div class="doc-section">
-
-<p>ColorFloodfill() changes the color value of any pixel that matches target and is an immediate neighbor.  If the method FillToBorderMethod is specified, the color value is changed for any neighbor pixel that does not match the bordercolor member of image.</p>
-
-<p>By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount.  The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
-
-<p>The format of the ColorFloodfillImage method is:</p>
-
-<pre class="code">
-  MagickBooleanType ColorFloodfillImage(Image *image,
-    const DrawInfo *draw_info,const PixelPacket target,
-    const ssize_t x_offset,const ssize_t y_offset,const PaintMethod method)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>draw_info</h5>
-<p>the draw info.</p>
-
-<h5>target</h5>
-<p>the RGB value of the target color.</p>
-
-<h5>x,y</h5>
-<p>the starting location of the operation.</p>
-
-<h5>method</h5>
-<p>Choose either FloodfillMethod or FillToBorderMethod.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DeleteImageAttribute">DeleteImageAttribute</a></h2>
-<div class="doc-section">
-
-<p>DeleteImageAttribute() deletes an attribute from the image.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      DeleteImageProperty(image,key);
-</pre>
-
-<p>The format of the DeleteImageAttribute method is:</p>
-
-<pre class="code">
-  MagickBooleanType DeleteImageAttribute(Image *image,const char *key)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image info.</p>
-
-<h5>key</h5>
-<p>the image key.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DeleteImageList">DeleteImageList</a></h2>
-<div class="doc-section">
-
-<p>DeleteImageList() deletes an image at the specified position in the list.</p>
-
-<p>The format of the DeleteImageList method is:</p>
-
-<pre class="code">
-  unsigned int DeleteImageList(Image *images,const ssize_t offset)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>images</h5>
-<p>the image list.</p>
-
-<h5>offset</h5>
-<p>the position within the list.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DeleteMagickRegistry">DeleteMagickRegistry</a></h2>
-<div class="doc-section">
-
-<p>DeleteMagickRegistry() deletes an entry in the registry as defined by the id. It returns MagickTrue if the entry is deleted otherwise MagickFalse if no entry is found in the registry that matches the id.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      char key[MaxTextExtent];
-      FormatMagickString(key,MaxTextExtent,"ld\n",id);
-      DeleteImageRegistry(key);
-</pre>
-
-<p>The format of the DeleteMagickRegistry method is:</p>
-
-<pre class="code">
-  MagickBooleanType DeleteMagickRegistry(const ssize_t id)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>id</h5>
-<p>the registry id.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DescribeImage">DescribeImage</a></h2>
-<div class="doc-section">
-
-<p>DescribeImage() describes an image by printing its attributes to the file. Attributes include the image width, height, size, and others.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      IdentifyImage(image,file,verbose);
-</pre>
-
-<p>The format of the DescribeImage method is:</p>
-
-<pre class="code">
-  MagickBooleanType DescribeImage(Image *image,FILE *file,
-    const MagickBooleanType verbose)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>file</h5>
-<p>the file, typically stdout.</p>
-
-<h5>verbose</h5>
-<p>A value other than zero prints more detailed information about the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DestroyImageAttributes">DestroyImageAttributes</a></h2>
-<div class="doc-section">
-
-<p>DestroyImageAttributes() deallocates memory associated with the image attribute list.</p>
-
-<p>The format of the DestroyImageAttributes method is:</p>
-
-<pre class="code">
-  DestroyImageAttributes(Image *image)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DestroyImages">DestroyImages</a></h2>
-<div class="doc-section">
-
-<p>DestroyImages() destroys an image list.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      DestroyImageList(image);
-</pre>
-
-<p>The format of the DestroyImages method is:</p>
-
-<pre class="code">
-  void DestroyImages(Image *image)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image sequence.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DestroyMagick">DestroyMagick</a></h2>
-<div class="doc-section">
-
-<p>DestroyMagick() destroys the ImageMagick environment.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      MagickCoreTerminus();
-</pre>
-
-<p>The format of the DestroyMagick function is:</p>
-
-<pre class="text">
-  DestroyMagick(void)
-</pre>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DispatchImage">DispatchImage</a></h2>
-<div class="doc-section">
-
-<p>DispatchImage() extracts pixel data from an image and returns it to you. The method returns MagickFalse on success otherwise MagickTrue if an error is encountered.  The data is returned as char, short int, int, ssize_t, float, or double in the order specified by map.</p>
-
-<p>Suppose you want to extract the first scanline of a 640x480 image as character data in red-green-blue order:</p>
-
-<pre class="text">
-  DispatchImage(image,0,0,640,1,"RGB",CharPixel,pixels,exception);
-</pre>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      ExportImagePixels(image,x_offset,y_offset,columns,rows,map,type,pixels,
-  exception);
-</pre>
-
-<p>The format of the DispatchImage method is:</p>
-
-<pre class="code">
-  unsigned int DispatchImage(const Image *image,const ssize_t x_offset,
-    const ssize_t y_offset,const size_t columns,
-    const size_t rows,const char *map,const StorageType type,
-    void *pixels,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>x_offset, y_offset, columns, rows</h5>
-<p>These values define the perimeter of a region of pixels you want to extract.</p>
-
-<h5>map</h5>
-<p>This string reflects the expected ordering of the pixel array. It can be any combination or order of R = red, G = green, B = blue, A = alpha, C = cyan, Y = yellow, M = magenta, K = black, or I = intensity (for grayscale).</p>
-
-<h5>type</h5>
-<p>Define the data type of the pixels.  Float and double types are normalized to [0..1] otherwise [0..QuantumRange].  Choose from these types: CharPixel, ShortPixel, IntegerPixel, LongPixel, FloatPixel, or DoublePixel.</p>
-
-<h5>pixels</h5>
-<p>This array of values contain the pixel components as defined by map and type.  You must preallocate this array where the expected length varies depending on the values of width, height, map, and type.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ExtractSubimageFromImageImage">ExtractSubimageFromImageImage</a></h2>
-<div class="doc-section">
-
-<p>ExtractSubimageFromImageImage() extracts a region of the image that most closely resembles the reference.</p>
-
-<p>The format of the ExtractSubimageFromImageImage method is:</p>
-
-<pre class="code">
-  Image *ExtractSubimageFromImage(const Image *image,
-    const Image *reference,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>reference</h5>
-<p>find an area of the image that closely resembles this image.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="FlattenImages">FlattenImages</a></h2>
-<div class="doc-section">
-
-<p>FlattenImages() Obsolete Function: Use MergeImageLayers() instead.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      MergeImageLayers(image,FlattenLayer,exception);
-</pre>
-
-<p>The format of the FlattenImage method is:</p>
-
-<pre class="code">
-  Image *FlattenImage(Image *image,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image sequence.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="FormatImageAttribute">FormatImageAttribute</a></h2>
-<div class="doc-section">
-
-<p>FormatImageAttribute() permits formatted key/value pairs to be saved as an image attribute.</p>
-
-<p>The format of the FormatImageAttribute method is:</p>
-
-<pre class="code">
-  MagickBooleanType FormatImageAttribute(Image *image,const char *key,
-    const char *format,...)
-</pre>
-
-<p>A description of each parameter follows.</p>
-
-<h5> image</h5>
-<p>The image.</p>
-
-<h5> key</h5>
-<p>The attribute key.</p>
-
-<h5> format</h5>
-<p>A string describing the format to use to write the remaining arguments.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="FormatString">FormatString</a></h2>
-<div class="doc-section">
-
-<p>FormatString() prints formatted output of a variable argument list.</p>
-
-<p>The format of the FormatString method is:</p>
-
-<pre class="code">
-  void FormatString(char *string,const char *format,...)
-</pre>
-
-<p>A description of each parameter follows.</p>
-
-<h5> string</h5>
-<p>Method FormatString returns the formatted string in this character buffer.</p>
-
-<h5> format</h5>
-<p>A string describing the format to use to write the remaining arguments.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetConfigureBlob">GetConfigureBlob</a></h2>
-<div class="doc-section">
-
-<p>GetConfigureBlob() returns the specified configure file as a blob.</p>
-
-<p>The format of the GetConfigureBlob method is:</p>
-
-<pre class="code">
-  void *GetConfigureBlob(const char *filename,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>filename</h5>
-<p>the configure file name.</p>
-
-<h5>path</h5>
-<p>return the full path information of the configure file.</p>
-
-<h5>length</h5>
-<p>This pointer to a size_t integer sets the initial length of the blob.  On return, it reflects the actual length of the blob.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetCacheView">GetCacheView</a></h2>
-<div class="doc-section">
-
-<p>GetCacheView() gets pixels from the in-memory or disk pixel cache as defined by the geometry parameters.   A pointer to the pixels is returned if the pixels are transferred, otherwise a NULL is returned.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-  GetCacheViewException(cache_view));
-</pre>
-
-<p>The format of the GetCacheView method is:</p>
-
-<pre class="code">
-  PixelPacket *GetCacheView(CacheView *cache_view,const ssize_t x,
-    const ssize_t y,const size_t columns,const size_t rows)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>cache_view</h5>
-<p>the address of a structure of type CacheView.</p>
-
-<h5>x,y,columns,rows</h5>
-<p>These values define the perimeter of a region of pixels.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetCacheViewIndexes">GetCacheViewIndexes</a></h2>
-<div class="doc-section">
-
-<p>GetCacheViewIndexes() returns the indexes associated with the specified view.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetCacheViewAuthenticIndexQueue(cache_view);
-</pre>
-
-<p>The format of the GetCacheViewIndexes method is:</p>
-
-<pre class="code">
-  IndexPacket *GetCacheViewIndexes(CacheView *cache_view)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>cache_view</h5>
-<p>the cache view.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetCacheViewPixels">GetCacheViewPixels</a></h2>
-<div class="doc-section">
-
-<p>GetCacheViewPixels() gets pixels from the in-memory or disk pixel cache as defined by the geometry parameters.   A pointer to the pixels is returned if the pixels are transferred, otherwise a NULL is returned.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-  GetCacheViewException(cache_view));
-</pre>
-
-<p>The format of the GetCacheViewPixels method is:</p>
-
-<pre class="code">
-  PixelPacket *GetCacheViewPixels(CacheView *cache_view,const ssize_t x,
-    const ssize_t y,const size_t columns,const size_t rows)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>cache_view</h5>
-<p>the cache view.</p>
-
-<h5>x,y,columns,rows</h5>
-<p>These values define the perimeter of a region of pixels.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetImageAttribute">GetImageAttribute</a></h2>
-<div class="doc-section">
-
-<p>GetImageAttribute() searches the list of image attributes and returns a pointer to the attribute if it exists otherwise NULL.</p>
-
-<p>The format of the GetImageAttribute method is:</p>
-
-<pre class="code">
-  const ImageAttribute *GetImageAttribute(const Image *image,
-    const char *key)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>key</h5>
-<p>These character strings are the name of an image attribute to return.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetImageClippingPathAttribute">GetImageClippingPathAttribute</a></h2>
-<div class="doc-section">
-
-<p>GetImageClippingPathAttribute() searches the list of image attributes and returns a pointer to a clipping path if it exists otherwise NULL.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetImageAttribute(image,"8BIM:1999,2998");
-</pre>
-
-<p>The format of the GetImageClippingPathAttribute method is:</p>
-
-<pre class="code">
-  const ImageAttribute *GetImageClippingPathAttribute(Image *image)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>attribute</h5>
-<p>Method GetImageClippingPathAttribute returns the clipping path if it exists otherwise NULL.</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetImageFromMagickRegistry">GetImageFromMagickRegistry</a></h2>
-<div class="doc-section">
-
-<p>GetImageFromMagickRegistry() gets an image from the registry as defined by its name.  If the image is not found, a NULL image is returned.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetImageRegistry(ImageRegistryType,name,exception);
-</pre>
-
-<p>The format of the GetImageFromMagickRegistry method is:</p>
-
-<pre class="code">
-  Image *GetImageFromMagickRegistry(const char *name,ssize_t *id,
-    ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>name</h5>
-<p>the name of the image to retrieve from the registry.</p>
-
-<h5>id</h5>
-<p>the registry id.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetMagickRegistry">GetMagickRegistry</a></h2>
-<div class="doc-section">
-
-<p>GetMagickRegistry() gets a blob from the registry as defined by the id.  If the blob that matches the id is not found, NULL is returned.</p>
-
-<p>The format of the GetMagickRegistry method is:</p>
-
-<pre class="code">
-  const void *GetMagickRegistry(const ssize_t id,RegistryType *type,
-    size_t *length,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>id</h5>
-<p>the registry id.</p>
-
-<h5>type</h5>
-<p>the registry type.</p>
-
-<h5>length</h5>
-<p>the blob length in number of bytes.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetImageGeometry">GetImageGeometry</a></h2>
-<div class="doc-section">
-
-<p>GetImageGeometry() returns a region as defined by the geometry string with respect to the image and its gravity.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      if (size_to_fit != MagickFalse)
-  ParseRegionGeometry(image,geometry,region_info,&image->exception); else
-  ParsePageGeometry(image,geometry,region_info,&image->exception);
-</pre>
-
-<p>The format of the GetImageGeometry method is:</p>
-
-<pre class="code">
-  int GetImageGeometry(Image *image,const char *geometry,
-    const unsigned int size_to_fit,RectangeInfo *region_info)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>flags</h5>
-<p>Method GetImageGeometry returns a bitmask that indicates which of the four values were located in the geometry string.</p>
-
-<h5>geometry</h5>
-<p>The geometry (e.g. 100x100+10+10).</p>
-
-<h5>size_to_fit</h5>
-<p>A value other than 0 means to scale the region so it fits within the specified width and height.</p>
-
-<h5>region_info</h5>
-<p>the region as defined by the geometry string with respect to the image and its gravity.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetImageList">GetImageList</a></h2>
-<div class="doc-section">
-
-<p>GetImageList() returns an image at the specified position in the list.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      CloneImage(GetImageFromList(images,(ssize_t) offset),0,0,MagickTrue,
-  exception);
-</pre>
-
-<p>The format of the GetImageList method is:</p>
-
-<pre class="code">
-  Image *GetImageList(const Image *images,const ssize_t offset,
-    ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>images</h5>
-<p>the image list.</p>
-
-<h5>offset</h5>
-<p>the position within the list.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetImageListIndex">GetImageListIndex</a></h2>
-<div class="doc-section">
-
-<p>GetImageListIndex() returns the position in the list of the specified image.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetImageIndexInList(images);
-</pre>
-
-<p>The format of the GetImageListIndex method is:</p>
-
-<pre class="code">
-  ssize_t GetImageListIndex(const Image *images)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>images</h5>
-<p>the image list.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetImageListSize">GetImageListSize</a></h2>
-<div class="doc-section">
-
-<p>GetImageListSize() returns the number of images in the list.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetImageListLength(images);
-</pre>
-
-<p>The format of the GetImageListSize method is:</p>
-
-<pre class="code">
-  size_t GetImageListSize(const Image *images)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>images</h5>
-<p>the image list.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetImagePixels">GetImagePixels</a></h2>
-<div class="doc-section">
-
-<p>GetImagePixels() obtains a pixel region for read/write access. If the region is successfully accessed, a pointer to a PixelPacket array representing the region is returned, otherwise NULL is returned.</p>
-
-<p>The returned pointer may point to a temporary working copy of the pixels or it may point to the original pixels in memory. Performance is maximized if the selected region is part of one row, or one or more full rows, since then there is opportunity to access the pixels in-place (without a copy) if the image is in RAM, or in a memory-mapped file. The returned pointer should *never* be deallocated by the user.</p>
-
-<p>Pixels accessed via the returned pointer represent a simple array of type PixelPacket. If the image type is CMYK or if the storage class is PseduoClass, call GetAuthenticIndexQueue() after invoking GetImagePixels() to obtain the black color component or colormap indexes (of type IndexPacket) corresponding to the region.  Once the PixelPacket (and/or IndexPacket) array has been updated, the changes must be saved back to the underlying image using SyncAuthenticPixels() or they may be lost.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetAuthenticPixels(image,x,y,columns,rows,&image->exception);
-</pre>
-
-<p>The format of the GetImagePixels() method is:</p>
-
-<pre class="code">
-  PixelPacket *GetImagePixels(Image *image,const ssize_t x,const ssize_t y,
-    const size_t columns,const size_t rows)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>x,y,columns,rows</h5>
-<p>These values define the perimeter of a region of pixels.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetIndexes">GetIndexes</a></h2>
-<div class="doc-section">
-
-<p>GetIndexes() returns the black channel or the colormap indexes associated with the last call to QueueAuthenticPixels() or GetVirtualPixels().  NULL is returned if the black channel or colormap indexes are not available.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetAuthenticIndexQueue(image);
-</pre>
-
-<p>The format of the GetIndexes() method is:</p>
-
-<pre class="code">
-  IndexPacket *GetIndexes(const Image *image)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>indexes</h5>
-<p>GetIndexes() returns the indexes associated with the last call to QueueAuthenticPixels() or GetAuthenticPixels().</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetNextImage">GetNextImage</a></h2>
-<div class="doc-section">
-
-<p>GetNextImage() returns the next image in a list.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetNextImageInList(images);
-</pre>
-
-<p>The format of the GetNextImage method is:</p>
-
-<pre class="code">
-  Image *GetNextImage(const Image *images)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>images</h5>
-<p>the image list.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetNextImageAttribute">GetNextImageAttribute</a></h2>
-<div class="doc-section">
-
-<p>GetNextImageAttribute() gets the next image attribute.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      const char *property;
-      property=GetNextImageProperty(image);
-      if (property != (const char *) NULL) 
-  GetImageAttribute(image,property);
-</pre>
-
-<p>The format of the GetNextImageAttribute method is:</p>
-
-<pre class="code">
-  const ImageAttribute *GetNextImageAttribute(const Image *image)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetNumberScenes">GetNumberScenes</a></h2>
-<div class="doc-section">
-
-<p>GetNumberScenes() returns the number of images in the list.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetImageListLength(image);
-</pre>
-
-<p>The format of the GetNumberScenes method is:</p>
-
-<pre class="code">
-  unsigned int GetNumberScenes(const Image *images)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>images</h5>
-<p>the image list.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetOnePixel">GetOnePixel</a></h2>
-<div class="doc-section">
-
-<p>GetOnePixel() returns a single pixel at the specified (x,y) location. The image background color is returned if an error occurs.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetOneAuthenticPixel(image,x,y,&pixel,&image->exception);
-</pre>
-
-<p>The format of the GetOnePixel() method is:</p>
-
-<pre class="code">
-  PixelPacket GetOnePixel(const Image image,const ssize_t x,const ssize_t y)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>x,y</h5>
-<p>These values define the location of the pixel to return.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixels">GetPixels</a></h2>
-<div class="doc-section">
-
-<p>GetPixels() returns the pixels associated with the last call to QueueAuthenticPixels() or GetAuthenticPixels().</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetAuthenticPixelQueue(image);
-</pre>
-
-<p>The format of the GetPixels() method is:</p>
-
-<pre class="code">
-  PixelPacket *GetPixels(const Image image)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>pixels</h5>
-<p>GetPixels() returns the pixels associated with the last call to QueueAuthenticPixels() or GetAuthenticPixels().</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPreviousImage">GetPreviousImage</a></h2>
-<div class="doc-section">
-
-<p>GetPreviousImage() returns the previous image in a list.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      GetPreviousImageInList(images));
-</pre>
-
-<p>The format of the GetPreviousImage method is:</p>
-
-<pre class="code">
-  Image *GetPreviousImage(const Image *images)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>images</h5>
-<p>the image list.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="HSLTransform">HSLTransform</a></h2>
-<div class="doc-section">
-
-<p>HSLTransform() converts a (hue, saturation, lightness) to a (red, green, blue) triple.</p>
-
-<p>The format of the HSLTransformImage method is:</p>
-
-<pre class="code">
-  void HSLTransform(const double hue,const double saturation,
-    const double lightness,Quantum *red,Quantum *green,Quantum *blue)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>hue, saturation, lightness</h5>
-<p>A double value representing a component of the HSL color space.</p>
-
-<h5>red, green, blue</h5>
-<p>A pointer to a pixel component of type Quantum.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="IdentityAffine">IdentityAffine</a></h2>
-<div class="doc-section">
-
-<p>IdentityAffine() initializes the affine transform to the identity matrix.</p>
-
-<p>The format of the IdentityAffine method is:</p>
-
-<pre class="code">
-  IdentityAffine(AffineMatrix *affine)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>affine</h5>
-<p>A pointer the affine transform of type AffineMatrix.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="InitializeMagick">InitializeMagick</a></h2>
-<div class="doc-section">
-
-<p>InitializeMagick() initializes the ImageMagick environment.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      MagickCoreGenesis(path,MagickFalse);
-</pre>
-
-<p>The format of the InitializeMagick function is:</p>
-
-<pre class="text">
-  InitializeMagick(const char *path)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>path</h5>
-<p>the execution path of the current ImageMagick client.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="InterpolatePixelColor">InterpolatePixelColor</a></h2>
-<div class="doc-section">
-
-<p>InterpolatePixelColor() applies bi-linear or tri-linear interpolation between a pixel and it's neighbors.</p>
-
-<p>The format of the InterpolatePixelColor method is:</p>
-
-<pre class="code">
-  MagickPixelPacket InterpolatePixelColor(const Image *image,
-    CacheView *view_info,InterpolatePixelMethod method,const double x,
-    const double y,ExceptionInfo *exception)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>image_view</h5>
-<p>the image cache view.</p>
-
-<h5>type</h5>
-<p>the type of pixel color interpolation.</p>
-
-<h5>x,y</h5>
-<p>A double representing the current (x,y) position of the pixel.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="InterpretImageAttributes">InterpretImageAttributes</a></h2>
-<div class="doc-section">
-
-<p>InterpretImageAttributes() replaces any embedded formatting characters with the appropriate image attribute and returns the translated text.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      InterpretImageProperties(image_info,image,embed_text);
-</pre>
-
-<p>The format of the InterpretImageAttributes method is:</p>
-
-<pre class="code">
-  char *InterpretImageAttributes(const ImageInfo *image_info,Image *image,
-    const char *embed_text)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image_info</h5>
-<p>the image info.</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>embed_text</h5>
-<p>the address of a character string containing the embedded formatting characters.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="LevelImageColor">LevelImageColor</a></h2>
-<div class="doc-section">
-
-<p>LevelImageColor() will map the given color to "black" and "white" values, limearly spreading out the colors, and level values on a channel by channel bases, as per LevelImage().  The given colors allows you to specify different level ranges for each of the color channels separately.</p>
-
-<p>If the boolean 'invert' is set true the image values will modifyed in the reverse direction. That is any existing "black" and "white" colors in the image will become the color values given, with all other values compressed appropriatally.  This effectivally maps a greyscale gradient into the given color gradient.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      LevelColorsImageChannel(image,channel,black_color,white_color,invert);
-</pre>
-
-<p>The format of the LevelImageColors method is:</p>
-
-<pre class="code">
-    MagickBooleanType LevelImageColors(Image *image,const ChannelType channel,
-      const MagickPixelPacket *black_color,const MagickPixelPacket *white_color,
-      const MagickBooleanType invert)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>channel</h5>
-<p>the channel.</p>
-
-<h5>black_color</h5>
-<p>The color to map black to/from</p>
-
-<h5>white_point</h5>
-<p>The color to map white to/from</p>
-
-<h5>invert</h5>
-<p>if true map the colors (levelize), rather than from (level)</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="LiberateMemory">LiberateMemory</a></h2>
-<div class="doc-section">
-
-<p>LiberateMemory() frees memory that has already been allocated, and NULL's the pointer to it.</p>
-
-<p>The format of the LiberateMemory method is:</p>
-
-<pre class="code">
-  void LiberateMemory(void **memory)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>memory</h5>
-<p>A pointer to a block of memory to free for reuse.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="LiberateSemaphoreInfo">LiberateSemaphoreInfo</a></h2>
-<div class="doc-section">
-
-<p>LiberateSemaphoreInfo() relinquishes a semaphore.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      UnlockSemaphoreInfo(*semaphore_info);
-</pre>
-
-<p>The format of the LiberateSemaphoreInfo method is:</p>
-
-<pre class="code">
-  LiberateSemaphoreInfo(void **semaphore_info)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>semaphore_info</h5>
-<p>Specifies a pointer to an SemaphoreInfo structure.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickIncarnate">MagickIncarnate</a></h2>
-<div class="doc-section">
-
-<p>MagickIncarnate() initializes the ImageMagick environment.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      MagickCoreGenesis(path,MagickFalse);
-</pre>
-
-<p>The format of the MagickIncarnate function is:</p>
-
-<pre class="text">
-  MagickIncarnate(const char *path)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>path</h5>
-<p>the execution path of the current ImageMagick client.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickMonitor">MagickMonitor</a></h2>
-<div class="doc-section">
-
-<p>MagickMonitor() calls the monitor handler method with a text string that describes the task and a measure of completion.  The method returns MagickTrue on success otherwise MagickFalse if an error is encountered, e.g. if there was a user interrupt.</p>
-
-<p>The format of the MagickMonitor method is:</p>
-
-<pre class="code">
-  MagickBooleanType MagickMonitor(const char *text,
-    const MagickOffsetType offset,const MagickSizeType span,
-    void *client_data)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>offset</h5>
-<p>the position relative to the span parameter which represents how much progress has been made toward completing a task.</p>
-
-<h5>span</h5>
-<p>the span relative to completing a task.</p>
-
-<h5>client_data</h5>
-<p>the client data.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MapImage">MapImage</a></h2>
-<div class="doc-section">
-
-<p>MapImage() replaces the colors of an image with the closest color from a reference image.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-       QuantizeInfo quantize_info;
-       GetQuantizeInfo(&quantize_info);
-       quantize_info.dither=dither;
-       RemapImage(&quantize_info,image,map_image);
-</pre>
-
-<p>The format of the MapImage method is:</p>
-
-<pre class="code">
-  MagickBooleanType MapImage(Image *image,const Image *map_image,
-    const MagickBooleanType dither)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>Specifies a pointer to an Image structure.</p>
-
-<h5>map_image</h5>
-<p>the image.  Reduce image to a set of colors represented by this image.</p>
-
-<h5>dither</h5>
-<p>Set this integer value to something other than zero to dither the mapped image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MapImages">MapImages</a></h2>
-<div class="doc-section">
-
-<p>MapImages() replaces the colors of a sequence of images with the closest color from a reference image.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-       QuantizeInfo quantize_info;
-       GetQuantizeInfo(&quantize_info);
-       quantize_info.dither=dither;
-       RemapImages(&quantize_info,images,map_image);
-</pre>
-
-<p>The format of the MapImage method is:</p>
-
-<pre class="code">
-  MagickBooleanType MapImages(Image *images,Image *map_image,
-    const MagickBooleanType dither)
-</pre>
-
-<p>A description of each parameter follows:</p>
-
-<h5>image</h5>
-<p>Specifies a pointer to a set of Image structures.</p>
-
-<h5>map_image</h5>
-<p>the image.  Reduce image to a set of colors represented by this image.</p>
-
-<h5>dither</h5>
-<p>Set this integer value to something other than zero to dither the quantized image.</p>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MatteFloodfill">MatteFloodfill</a></h2>
-<div class="doc-section">
-
-<p>MatteFloodfill() changes the transparency value of any pixel that matches target and is an immediate neighbor.  If the method FillToBorderMethod is specified, the transparency value is changed for any neighbor pixel that does not match the bordercolor member of image.</p>
-
-<p>By default target must match a particular pixel transparency exactly. However, in many cases two transparency values may differ by a small amount.  The fuzz member of image defines how much tolerance is acceptable to consider two transparency values as the same.  For example, set fuzz to 10 and the opacity values of 100 and 102 respectively are now interpreted as the same value for the purposes of the floodfill.</p>
+<p>GetPixelViewPixels() returns the pixel view pixel_wands.</p>
 
-<p>The format of the MatteFloodfillImage method is:</p>
+<p>The format of the GetPixelViewPixels method is:</p>
 
 <pre class="code">
-  MagickBooleanType MatteFloodfillImage(Image *image,
-    const PixelPacket target,const Quantum opacity,const ssize_t x_offset,
-    const ssize_t y_offset,const PaintMethod method)
+  PixelWand *GetPixelViewPixels(const PixelView *pixel_view)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>target</h5>
-<p>the RGB value of the target color.</p>
-
-<h5>opacity</h5>
-<p>the level of transparency: 0 is fully opaque and QuantumRange is fully transparent.</p>
-
-<h5>x,y</h5>
-<p>the starting location of the operation.</p>
-
-<h5>method</h5>
-<p>Choose either FloodfillMethod or FillToBorderMethod.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MaximumImages">MaximumImages</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixelViewWand">GetPixelViewWand</a></h2>
 <div class="doc-section">
 
-<p>MaximumImages() returns the maximum intensity of an image sequence.</p>
-
-<p>Deprecated, replace with:</p>
+<p>GetPixelViewWand() returns the magick wand associated with the pixel view.</p>
 
-<pre class="text">
-      EvaluateImages(images,MinEvaluateOperator,exception);
-</pre>
-
-<p>The format of the MaxImages method is:</p>
+<p>The format of the GetPixelViewWand method is:</p>
 
 <pre class="code">
-  Image *MaximumImages(Image *images,ExceptionInfo *exception)
+  MagickWand *GetPixelViewWand(const PixelView *pixel_view)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>images</h5>
-<p>the image sequence.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MinimumImages">MinimumImages</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixelViewWidth">GetPixelViewWidth</a></h2>
 <div class="doc-section">
 
-<p>MinimumImages() returns the minimum intensity of an image sequence.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      EvaluateImages(images,MinEvaluateOperator,exception);
-</pre>
+<p>GetPixelViewWidth() returns the pixel view width.</p>
 
-<p>The format of the MinimumImages method is:</p>
+<p>The format of the GetPixelViewWidth method is:</p>
 
 <pre class="code">
-  Image *MinimumImages(Image *images,ExceptionInfo *exception)
+  size_t GetPixelViewWidth(const PixelView *pixel_view)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>images</h5>
-<p>the image sequence.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MedianFilterImage">MedianFilterImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixelViewX">GetPixelViewX</a></h2>
 <div class="doc-section">
 
-<p>MedianFilterImage() applies a digital filter that improves the quality of a noisy image.  Each pixel is replaced by the median in a set of neighboring pixels as defined by radius.</p>
-
-<p>The algorithm was contributed by Mike Edmonds and implements an insertion sort for selecting median color-channel values.  For more on this algorithm see "Skip Lists: A probabilistic Alternative to Balanced Trees" by William Pugh in the June 1990 of Communications of the ACM.</p>
+<p>GetPixelViewX() returns the pixel view x offset.</p>
 
-<p>The format of the MedianFilterImage method is:</p>
+<p>The format of the GetPixelViewX method is:</p>
 
 <pre class="code">
-  Image *MedianFilterImage(const Image *image,const double radius,
-    ExceptionInfo *exception)
+  ssize_t GetPixelViewX(const PixelView *pixel_view)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>radius</h5>
-<p>the radius of the pixel neighborhood.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ModeImage">ModeImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="GetPixelViewY">GetPixelViewY</a></h2>
 <div class="doc-section">
 
-<p>ModeImage() makes each pixel the 'predominate color' of the neighborhood of the specified radius.</p>
+<p>GetPixelViewY() returns the pixel view y offset.</p>
 
-<p>The format of the ModeImage method is:</p>
+<p>The format of the GetPixelViewY method is:</p>
 
 <pre class="code">
-  Image *ModeImage(const Image *image,const double radius,
-    ExceptionInfo *exception)
+  ssize_t GetPixelViewY(const PixelView *pixel_view)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>radius</h5>
-<p>the radius of the pixel neighborhood.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MosaicImages">MosaicImages</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="IsPixelView">IsPixelView</a></h2>
 <div class="doc-section">
 
-<p>MosaicImages() Obsolete Function: Use MergeImageLayers() instead.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      MergeImageLayers(image,MosaicLayer,exception);
-</pre>
+<p>IsPixelView() returns MagickTrue if the the parameter is verified as a pixel view container.</p>
 
-<p>The format of the MosaicImage method is:</p>
+<p>The format of the IsPixelView method is:</p>
 
 <pre class="code">
-  Image *MosaicImages(const Image *image,ExceptionInfo *exception)
+  MagickBooleanType IsPixelView(const PixelView *pixel_view)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image list to be composited together</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>pixel_view</h5>
+<p>the pixel view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="OpaqueImage">OpaqueImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickClipPathImage">MagickClipPathImage</a></h2>
 <div class="doc-section">
 
-<p>OpaqueImage() changes any pixel that matches color with the color defined by fill.</p>
-
-<p>By default color must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount.  Fuzz defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.</p>
+<p>MagickClipPathImage() clips along the named paths from the 8BIM profile, if present. Later operations take effect inside the path.  Id may be a number if preceded with #, to work on a numbered path, e.g., "#1" to use the first path.</p>
 
-<p>The format of the OpaqueImage method is:</p>
+<p>The format of the MagickClipPathImage method is:</p>
 
 <pre class="code">
-  MagickBooleanType OpaqueImage(Image *image,
-    const PixelPacket *target,const PixelPacket fill)
+  MagickBooleanType MagickClipPathImage(MagickWand *wand,
+    const char *pathname,const MagickBooleanType inside)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>target</h5>
-<p>the RGB value of the target color.</p>
+<h5>pathname</h5>
+<p>name of clipping path resource. If name is preceded by #, use clipping path numbered by name.</p>
 
-<h5>fill</h5>
-<p>the replacement color.</p>
+<h5>inside</h5>
+<p>if non-zero, later operations take effect inside clipping path. Otherwise later operations take effect outside clipping path.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="OpenCacheView">OpenCacheView</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DrawGetFillAlpha">DrawGetFillAlpha</a></h2>
 <div class="doc-section">
 
-<p>OpenCacheView() opens a view into the pixel cache, using the VirtualPixelMethod that is defined within the given image itself.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      AcquireCacheView(image);
-</pre>
+<p>DrawGetFillAlpha() returns the alpha used when drawing using the fill color or fill texture.  Fully opaque is 1.0.</p>
 
-<p>The format of the OpenCacheView method is:</p>
+<p>The format of the DrawGetFillAlpha method is:</p>
 
 <pre class="code">
-  CacheView *OpenCacheView(const Image *image)
+  double DrawGetFillAlpha(const DrawingWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the drawing wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PaintFloodfill">PaintFloodfill</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DrawGetStrokeAlpha">DrawGetStrokeAlpha</a></h2>
 <div class="doc-section">
 
-<p>PaintFloodfill() changes the color value of any pixel that matches target and is an immediate neighbor.  If the method FillToBorderMethod is specified, the color value is changed for any neighbor pixel that does not match the bordercolor member of image.</p>
-
-<p>By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount.  The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
-
-<p>Deprecated, replace with:</p>
+<p>DrawGetStrokeAlpha() returns the alpha of stroked object outlines.</p>
 
-<pre class="text">
-      FloodfillPaintImage(image,channel,draw_info,target,x,y,
-  method == FloodfillMethod ? MagickFalse : MagickTrue);
-</pre>
-
-<p>The format of the PaintFloodfillImage method is:</p>
+<p>The format of the DrawGetStrokeAlpha method is:</p>
 
 <pre class="code">
-  MagickBooleanType PaintFloodfillImage(Image *image,
-    const ChannelType channel,const MagickPixelPacket target,const ssize_t x,
-    const ssize_t y,const DrawInfo *draw_info,const PaintMethod method)
+  double DrawGetStrokeAlpha(const DrawingWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the drawing wand. </p>
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DrawPeekGraphicWand">DrawPeekGraphicWand</a></h2>
+<div class="doc-section">
 
-<h5>channel</h5>
-<p>the channel(s).</p>
+<p>DrawPeekGraphicWand() returns the current drawing wand.</p>
 
-<h5>target</h5>
-<p>the RGB value of the target color.</p>
+<p>The format of the PeekDrawingWand method is:</p>
 
-<h5>x,y</h5>
-<p>the starting location of the operation.</p>
+<pre class="code">
+  DrawInfo *DrawPeekGraphicWand(const DrawingWand *wand)
+</pre>
 
-<h5>draw_info</h5>
-<p>the draw info.</p>
+<p>A description of each parameter follows:</p>
 
-<h5>method</h5>
-<p>Choose either FloodfillMethod or FillToBorderMethod.</p>
+<h5>wand</h5>
+<p>the drawing wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PaintOpaqueImage">PaintOpaqueImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DrawPopGraphicContext">DrawPopGraphicContext</a></h2>
 <div class="doc-section">
 
-<p>PaintOpaqueImage() changes any pixel that matches color with the color defined by fill.</p>
-
-<p>By default color must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount.  Fuzz defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      OpaquePaintImageChannel(image,DefaultChannels,target,fill,MagickFalse);
-      OpaquePaintImageChannel(image,channel,target,fill,MagickFalse);
-</pre>
+<p>DrawPopGraphicContext() destroys the current drawing wand and returns to the previously pushed drawing wand. Multiple drawing wands may exist. It is an error to attempt to pop more drawing wands than have been pushed, and it is proper form to pop all drawing wands which have been pushed.</p>
 
-<p>The format of the PaintOpaqueImage method is:</p>
+<p>The format of the DrawPopGraphicContext method is:</p>
 
 <pre class="code">
-  MagickBooleanType PaintOpaqueImage(Image *image,
-    const PixelPacket *target,const PixelPacket *fill)
-  MagickBooleanType PaintOpaqueImageChannel(Image *image,
-    const ChannelType channel,const PixelPacket *target,
-    const PixelPacket *fill)
+  MagickBooleanType DrawPopGraphicContext(DrawingWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>channel</h5>
-<p>the channel(s).</p>
-
-<h5>target</h5>
-<p>the RGB value of the target color.</p>
-
-<h5>fill</h5>
-<p>the replacement color.</p>
+<h5>wand</h5>
+<p>the drawing wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PaintTransparentImage">PaintTransparentImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DrawPushGraphicContext">DrawPushGraphicContext</a></h2>
 <div class="doc-section">
 
-<p>PaintTransparentImage() changes the opacity value associated with any pixel that matches color to the value defined by opacity.</p>
-
-<p>By default color must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount.  Fuzz defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      TransparentPaintImage(image,target,opacity,MagickFalse);
-</pre>
+<p>DrawPushGraphicContext() clones the current drawing wand to create a new drawing wand.  The original drawing wand(s) may be returned to by invoking PopDrawingWand().  The drawing wands are stored on a drawing wand stack.  For every Pop there must have already been an equivalent Push.</p>
 
-<p>The format of the PaintTransparentImage method is:</p>
+<p>The format of the DrawPushGraphicContext method is:</p>
 
 <pre class="code">
-  MagickBooleanType PaintTransparentImage(Image *image,
-    const MagickPixelPacket *target,const Quantum opacity)
+  MagickBooleanType DrawPushGraphicContext(DrawingWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>target</h5>
-<p>the RGB value of the target color.</p>
-
-<h5>opacity</h5>
-<p>the replacement opacity value.</p>
+<h5>wand</h5>
+<p>the drawing wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ParseSizeGeometry">ParseSizeGeometry</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DrawSetFillAlpha">DrawSetFillAlpha</a></h2>
 <div class="doc-section">
 
-<p>ParseSizeGeometry() returns a region as defined by the geometry string with respect to the image dimensions and aspect ratio.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      ParseMetaGeometry(geometry,&region_info->x,&region_info->y,
-  &region_info->width,&region_info->height);
-</pre>
+<p>DrawSetFillAlpha() sets the alpha to use when drawing using the fill color or fill texture.  Fully opaque is 1.0.</p>
 
-<p>The format of the ParseSizeGeometry method is:</p>
+<p>The format of the DrawSetFillAlpha method is:</p>
 
 <pre class="code">
-  MagickStatusType ParseSizeGeometry(const Image *image,
-    const char *geometry,RectangeInfo *region_info)
+  void DrawSetFillAlpha(DrawingWand *wand,const double fill_alpha)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>geometry</h5>
-<p>The geometry (e.g. 100x100+10+10).</p>
+<h5>wand</h5>
+<p>the drawing wand.</p>
 
-<h5>region_info</h5>
-<p>the region as defined by the geometry string.</p>
+<h5>fill_alpha</h5>
+<p>fill alpha</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PopImageList">PopImageList</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="DrawSetStrokeAlpha">DrawSetStrokeAlpha</a></h2>
 <div class="doc-section">
 
-<p>PopImageList() removes the last image in the list.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      RemoveLastImageFromList(images);
-</pre>
+<p>DrawSetStrokeAlpha() specifies the alpha of stroked object outlines.</p>
 
-<p>The format of the PopImageList method is:</p>
+<p>The format of the DrawSetStrokeAlpha method is:</p>
 
 <pre class="code">
-  Image *PopImageList(Image **images)
+  void DrawSetStrokeAlpha(DrawingWand *wand,const double stroke_alpha)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>images</h5>
-<p>the image list.</p>
+<h5>wand</h5>
+<p>the drawing wand.</p>
+
+<h5>stroke_alpha</h5>
+<p>stroke alpha.  The value 1.0 is opaque.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PopImagePixels">PopImagePixels</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickColorFloodfillImage">MagickColorFloodfillImage</a></h2>
 <div class="doc-section">
 
-<p>PopImagePixels() transfers one or more pixel components from the image pixel cache to a user supplied buffer.  The pixels are returned in network byte order.  MagickTrue is returned if the pixels are successfully transferred, otherwise MagickFalse.</p>
+<p>MagickColorFloodfillImage() changes the color value of any pixel that matches target and is an immediate neighbor.  If the method FillToBorderMethod is specified, the color value is changed for any neighbor pixel that does not match the bordercolor member of image.</p>
 
-<p>The format of the PopImagePixels method is:</p>
+<p>The format of the MagickColorFloodfillImage method is:</p>
 
 <pre class="code">
-  size_t PopImagePixels(Image *,const QuantumType quantum,
-    unsigned char *destination)
+  MagickBooleanType MagickColorFloodfillImage(MagickWand *wand,
+    const PixelWand *fill,const double fuzz,const PixelWand *bordercolor,
+    const ssize_t x,const ssize_t y)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>quantum</h5>
-<p>Declare which pixel components to transfer (RGB, RGBA, etc).</p>
+<h5>fill</h5>
+<p>the floodfill color pixel wand.</p>
 
-<h5>destination</h5>
-<p>The components are transferred to this buffer.</p>
+<h5>fuzz</h5>
+<p>By default target must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
 
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PostscriptGeometry">PostscriptGeometry</a></h2>
-<div class="doc-section">
+<h5>bordercolor</h5>
+<p>the border color pixel wand.</p>
 
-<p>PostscriptGeometry() replaces any page mneumonic with the equivalent size in picas.</p>
+<h5>x,y</h5>
+<p>the starting location of the operation.</p>
 
-<p>Deprecated, replace with:</p>
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickDescribeImage">MagickDescribeImage</a></h2>
+<div class="doc-section">
 
-<pre class="text">
-      GetPageGeometry(page);
-</pre>
+<p>MagickDescribeImage() identifies an image by printing its attributes to the file.  Attributes include the image width, height, size, and others.</p>
 
-<p>The format of the PostscriptGeometry method is:</p>
+<p>The format of the MagickDescribeImage method is:</p>
 
 <pre class="code">
-  char *PostscriptGeometry(const char *page)
+  const char *MagickDescribeImage(MagickWand *wand)
 </pre>
 
-<p>A description of each parameter follows.</p>
+<p>A description of each parameter follows:</p>
 
-<h5> page</h5>
-<p>Specifies a pointer to an array of characters. The string is either a Postscript page name (e.g. A4) or a postscript page geometry (e.g. 612x792+36+36).</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PushImageList">PushImageList</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickFlattenImages">MagickFlattenImages</a></h2>
 <div class="doc-section">
 
-<p>PushImageList() adds an image to the end of the list.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      AppendImageToList(images,CloneImageList(image,exception));
-</pre>
+<p>MagickFlattenImages() merges a sequence of images.  This useful for combining Photoshop layers into a single image.</p>
 
-<p>The format of the PushImageList method is:</p>
+<p>The format of the MagickFlattenImages method is:</p>
 
 <pre class="code">
-  unsigned int PushImageList(Image *images,const Image *image,
-    ExceptionInfo *exception)
+  MagickWand *MagickFlattenImages(MagickWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>images</h5>
-<p>the image list.</p>
-
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PushImagePixels">PushImagePixels</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickGetImageAttribute">MagickGetImageAttribute</a></h2>
 <div class="doc-section">
 
-<p>PushImagePixels() transfers one or more pixel components from a user supplied buffer into the image pixel cache of an image.  The pixels are expected in network byte order.  It returns MagickTrue if the pixels are successfully transferred, otherwise MagickFalse.</p>
+<p>MagickGetImageAttribute() returns a value associated with the specified property.  Use MagickRelinquishMemory() to free the value when you are finished with it.</p>
 
-<p>The format of the PushImagePixels method is:</p>
+<p>The format of the MagickGetImageAttribute method is:</p>
 
 <pre class="code">
-  size_t PushImagePixels(Image *image,const QuantumType quantum,
-    const unsigned char *source)
+  char *MagickGetImageAttribute(MagickWand *wand,const char *property)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>quantum</h5>
-<p>Declare which pixel components to transfer (red, green, blue, opacity, RGB, or RGBA).</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>source</h5>
-<p>The pixel components are transferred from this buffer.</p>
+<h5>property</h5>
+<p>the property.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="QuantizationError">QuantizationError</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickGetImageMatte">MagickGetImageMatte</a></h2>
 <div class="doc-section">
 
-<p>QuantizationError() measures the difference between the original and quantized images.  This difference is the total quantization error.  The error is computed by summing over all pixels in an image the distance squared in RGB space between each reference pixel value and its quantized value.  These values are computed:</p>
+<p>MagickGetImageMatte() returns MagickTrue if the image has a matte channel otherwise MagickFalse.</p>
 
-<pre class="text">
-      o mean_error_per_pixel:  This value is the mean error for any single
-  pixel in the image.
+<p>The format of the MagickGetImageMatte method is:</p>
+
+<pre class="code">
+  size_t MagickGetImageMatte(MagickWand *wand)
 </pre>
 
-<h5>normalized_mean_square_error</h5>
-<p>This value is the normalized mean quantization error for any single pixel in the image.  This distance measure is normalized to a range between 0 and 1.  It is independent of the range of red, green, and blue values in the image.</p>
+<p>A description of each parameter follows:</p>
+
+<h5>wand</h5>
+<p>the magick wand.</p>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickGetImagePixels">MagickGetImagePixels</a></h2>
+<div class="doc-section">
 
-<h5>normalized_maximum_square_error</h5>
-<p>Thsi value is the normalized maximum quantization error for any single pixel in the image.  This distance measure is normalized to a range between 0 and 1.  It is independent of the range of red, green, and blue values in your image.</p>
+<p>MagickGetImagePixels() extracts pixel data from an image and returns it to you.  The method returns MagickTrue on success otherwise MagickFalse if an error is encountered.  The data is returned as char, short int, int, ssize_t, float, or double in the order specified by map.</p>
 
-<p>Deprecated, replace with:</p>
+<p>Suppose you want to extract the first scanline of a 640x480 image as character data in red-green-blue order:</p>
 
 <pre class="text">
-      GetImageQuantizeError(image);
+  MagickGetImagePixels(wand,0,0,640,1,"RGB",CharPixel,pixels);
 </pre>
 
-<p>The format of the QuantizationError method is:</p>
+<p>The format of the MagickGetImagePixels method is:</p>
 
 <pre class="code">
-  unsigned int QuantizationError(Image *image)
+  MagickBooleanType MagickGetImagePixels(MagickWand *wand,
+    const ssize_t x,const ssize_t y,const size_t columns,
+    const size_t rows,const char *map,const StorageType storage,
+    void *pixels)
 </pre>
 
-<p>A description of each parameter follows.</p>
+<p>A description of each parameter follows:</p>
+
+<h5>wand</h5>
+<p>the magick wand.</p>
+
+<h5>x, y, columns, rows</h5>
+<p>These values define the perimeter of a region of pixels you want to extract.</p>
+
+<h5>map</h5>
+<p>This string reflects the expected ordering of the pixel array. It can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.</p>
+
+<h5>storage</h5>
+<p>Define the data type of the pixels.  Float and double types are expected to be normalized [0..1] otherwise [0..QuantumRange].  Choose from these types: CharPixel, DoublePixel, FloatPixel, IntegerPixel, LongPixel, QuantumPixel, or ShortPixel.</p>
 
-<h5>image</h5>
-<p>Specifies a pointer to an Image structure;  returned from ReadImage.</p>
+<h5>pixels</h5>
+<p>This array of values contain the pixel components as defined by map and type.  You must preallocate this array where the expected length varies depending on the values of width, height, map, and type.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="RandomChannelThresholdImage">RandomChannelThresholdImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickGetImageSize">MagickGetImageSize</a></h2>
 <div class="doc-section">
 
-<p>RandomChannelThresholdImage() changes the value of individual pixels based on the intensity of each pixel compared to a random threshold.  The result is a low-contrast, two color image.</p>
+<p>MagickGetImageSize() returns the image length in bytes.</p>
 
-<p>The format of the RandomChannelThresholdImage method is:</p>
+<p>The format of the MagickGetImageSize method is:</p>
 
 <pre class="code">
-  unsigned int RandomChannelThresholdImage(Image *image,
-     const char *channel, const char *thresholds,
-     ExceptionInfo *exception)
+  MagickBooleanType MagickGetImageSize(MagickWand *wand,
+    MagickSizeType *length)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>channel</h5>
-<p>the channel or channels to be thresholded.</p>
-
-<h5>thresholds</h5>
-<p>a geometry string containing LOWxHIGH thresholds. If the string contains 2x2, 3x3, or 4x4, then an ordered dither of order 2, 3, or 4 will be performed instead.</p>
-
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>length</h5>
+<p>the image length in bytes.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ReacquireMemory">ReacquireMemory</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickMapImage">MagickMapImage</a></h2>
 <div class="doc-section">
 
-<p>ReacquireMemory() changes the size of the memory and returns a pointer to the (possibly moved) block.  The contents will be unchanged up to the lesser of the new and old sizes.</p>
+<p>MagickMapImage() replaces the colors of an image with the closest color from a reference image.</p>
 
-<p>The format of the ReacquireMemory method is:</p>
+<p>The format of the MagickMapImage method is:</p>
 
 <pre class="code">
-  void ReacquireMemory(void **memory,const size_t size)
+  MagickBooleanType MagickMapImage(MagickWand *wand,
+    const MagickWand *map_wand,const MagickBooleanType dither)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>memory</h5>
-<p>A pointer to a memory allocation.  On return the pointer may change but the contents of the original allocation will not.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>size</h5>
-<p>the new size of the allocated memory.</p>
+<h5>map</h5>
+<p>the map wand.</p>
+
+<h5>dither</h5>
+<p>Set this integer value to something other than zero to dither the mapped image.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="RecolorImage">RecolorImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickMatteFloodfillImage">MagickMatteFloodfillImage</a></h2>
 <div class="doc-section">
 
-<p>RecolorImage() apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects.  Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets).  The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255).</p>
+<p>MagickMatteFloodfillImage() changes the transparency value of any pixel that matches target and is an immediate neighbor.  If the method FillToBorderMethod is specified, the transparency value is changed for any neighbor pixel that does not match the bordercolor member of image.</p>
 
-<p>The format of the RecolorImage method is:</p>
+<p>The format of the MagickMatteFloodfillImage method is:</p>
 
 <pre class="code">
-  Image *RecolorImage(const Image *image,const size_t order,
-    const double *color_matrix,ExceptionInfo *exception)
+  MagickBooleanType MagickMatteFloodfillImage(MagickWand *wand,
+    const double alpha,const double fuzz,const PixelWand *bordercolor,
+    const ssize_t x,const ssize_t y)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>order</h5>
-<p>the number of columns and rows in the recolor matrix.</p>
+<h5>alpha</h5>
+<p>the level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.</p>
 
-<h5>color_matrix</h5>
-<p>An array of double representing the recolor matrix.</p>
+<h5>fuzz</h5>
+<p>By default target must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>bordercolor</h5>
+<p>the border color pixel wand.</p>
+
+<h5>x,y</h5>
+<p>the starting location of the operation.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ReduceNoiseImage">ReduceNoiseImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickMedianFilterImage">MagickMedianFilterImage</a></h2>
 <div class="doc-section">
 
-<p>ReduceNoiseImage() smooths the contours of an image while still preserving edge information.  The algorithm works by replacing each pixel with its neighbor closest in value.  A neighbor is defined by radius.  Use a radius of 0 and ReduceNoise() selects a suitable radius for you.</p>
+<p>MagickMedianFilterImage() applies a digital filter that improves the quality of a noisy image.  Each pixel is replaced by the median in a set of neighboring pixels as defined by radius.</p>
 
-<p>The format of the ReduceNoiseImage method is:</p>
+<p>The format of the MagickMedianFilterImage method is:</p>
 
 <pre class="code">
-  Image *ReduceNoiseImage(const Image *image,const double radius,
-    ExceptionInfo *exception)
+  MagickBooleanType MagickMedianFilterImage(MagickWand *wand,
+    const double radius)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
 <h5>radius</h5>
 <p>the radius of the pixel neighborhood.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
-
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ResetImageAttributeIterator">ResetImageAttributeIterator</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickMinimumImages">MagickMinimumImages</a></h2>
 <div class="doc-section">
 
-<p>ResetImageAttributeIterator() resets the image attributes iterator.  Use it in conjunction with GetNextImageAttribute() to iterate over all the values associated with an image.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      ResetImagePropertyIterator(image);
-</pre>
+<p>MagickMinimumImages() returns the minimum intensity of an image sequence.</p>
 
-<p>The format of the ResetImageAttributeIterator method is:</p>
+<p>The format of the MagickMinimumImages method is:</p>
 
 <pre class="code">
-  ResetImageAttributeIterator(const ImageInfo *image)
+  MagickWand *MagickMinimumImages(MagickWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetCacheViewPixels">SetCacheViewPixels</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickModeImage">MagickModeImage</a></h2>
 <div class="doc-section">
 
-<p>SetCacheViewPixels() gets pixels from the in-memory or disk pixel cache as defined by the geometry parameters.   A pointer to the pixels is returned if the pixels are transferred, otherwise a NULL is returned.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      QueueCacheViewAuthenticPixels(cache_view,x,y,columns,rows,
-  GetCacheViewException(cache_view));
-</pre>
+<p>MagickModeImage() makes each pixel the 'predominate color' of the neighborhood of the specified radius.</p>
 
-<p>The format of the SetCacheViewPixels method is:</p>
+<p>The format of the MagickModeImage method is:</p>
 
 <pre class="code">
-  PixelPacket *SetCacheViewPixels(CacheView *cache_view,const ssize_t x,
-    const ssize_t y,const size_t columns,const size_t rows)
+  MagickBooleanType MagickModeImage(MagickWand *wand,
+    const double radius)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>cache_view</h5>
-<p>the cache view.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>x,y,columns,rows</h5>
-<p>These values define the perimeter of a region of pixels.</p>
+<h5>radius</h5>
+<p>the radius of the pixel neighborhood.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetExceptionInfo">SetExceptionInfo</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickMosaicImages">MagickMosaicImages</a></h2>
 <div class="doc-section">
 
-<p>SetExceptionInfo() sets the exception severity.</p>
+<p>MagickMosaicImages() inlays an image sequence to form a single coherent picture.  It returns a wand with each image in the sequence composited at the location defined by the page offset of the image.</p>
 
-<p>The format of the SetExceptionInfo method is:</p>
+<p>The format of the MagickMosaicImages method is:</p>
 
 <pre class="code">
-  MagickBooleanType SetExceptionInfo(ExceptionInfo *exception,
-    ExceptionType severity)
+  MagickWand *MagickMosaicImages(MagickWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>exception</h5>
-<p>the exception info.</p>
-
-<h5>severity</h5>
-<p>the exception severity.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetImage">SetImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickOpaqueImage">MagickOpaqueImage</a></h2>
 <div class="doc-section">
 
-<p>SetImage() sets the red, green, and blue components of each pixel to the image background color and the opacity component to the specified level of transparency.  The background color is defined by the background_color member of the image.</p>
+<p>MagickOpaqueImage() changes any pixel that matches color with the color defined by fill.</p>
 
-<p>The format of the SetImage method is:</p>
+<p>The format of the MagickOpaqueImage method is:</p>
 
 <pre class="code">
-  void SetImage(Image *image,const Quantum opacity)
+  MagickBooleanType MagickOpaqueImage(MagickWand *wand,
+    const PixelWand *target,const PixelWand *fill,const double fuzz)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>opacity</h5>
-<p>Set each pixel to this level of transparency.</p>
+<h5>channel</h5>
+<p>the channel(s).</p>
 
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetImageAttribute">SetImageAttribute</a></h2>
-<div class="doc-section">
+<h5>target</h5>
+<p>Change this target color to the fill color within the image.</p>
 
-<p>SetImageAttribute() searches the list of image attributes and replaces the attribute value.  If it is not found in the list, the attribute name and value is added to the list.</p>
+<h5>fill</h5>
+<p>the fill pixel wand.</p>
 
-<p>Deprecated, replace with:</p>
+<h5>fuzz</h5>
+<p>By default target must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
 
-<pre class="text">
-      SetImageProperty(image,key,value);
-</pre>
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickPaintFloodfillImage">MagickPaintFloodfillImage</a></h2>
+<div class="doc-section">
+
+<p>MagickPaintFloodfillImage() changes the color value of any pixel that matches target and is an immediate neighbor.  If the method FillToBorderMethod is specified, the color value is changed for any neighbor pixel that does not match the bordercolor member of image.</p>
 
-<p>The format of the SetImageAttribute method is:</p>
+<p>The format of the MagickPaintFloodfillImage method is:</p>
 
 <pre class="code">
-   MagickBooleanType SetImageAttribute(Image *image,const char *key,
-     const char *value)
+  MagickBooleanType MagickPaintFloodfillImage(MagickWand *wand,
+    const ChannelType channel,const PixelWand *fill,const double fuzz,
+    const PixelWand *bordercolor,const ssize_t x,const ssize_t y)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
+
+<h5>channel</h5>
+<p>the channel(s).</p>
 
-<h5>key</h5>
-<p>the key.</p>
+<h5>fill</h5>
+<p>the floodfill color pixel wand.</p>
 
-<h5>value</h5>
-<p>the value.</p>
+<h5>fuzz</h5>
+<p>By default target must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
+
+<h5>bordercolor</h5>
+<p>the border color pixel wand.</p>
+
+<h5>x,y</h5>
+<p>the starting location of the operation.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetImageList">SetImageList</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickPaintOpaqueImage">MagickPaintOpaqueImage</a></h2>
 <div class="doc-section">
 
-<p>SetImageList() inserts an image into the list at the specified position.</p>
+<p>MagickPaintOpaqueImage() changes any pixel that matches color with the color defined by fill.</p>
 
-<p>The format of the SetImageList method is:</p>
+<p>The format of the MagickPaintOpaqueImage method is:</p>
 
 <pre class="code">
-  unsigned int SetImageList(Image *images,const Image *image,
-    const ssize_t offset,ExceptionInfo *exception)
+  MagickBooleanType MagickPaintOpaqueImage(MagickWand *wand,
+    const PixelWand *target,const PixelWand *fill,const double fuzz)
+  MagickBooleanType MagickPaintOpaqueImageChannel(MagickWand *wand,
+    const ChannelType channel,const PixelWand *target,
+    const PixelWand *fill,const double fuzz)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>images</h5>
-<p>the image list.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>channel</h5>
+<p>the channel(s).</p>
+
+<h5>target</h5>
+<p>Change this target color to the fill color within the image.</p>
 
-<h5>offset</h5>
-<p>the position within the list.</p>
+<h5>fill</h5>
+<p>the fill pixel wand.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>fuzz</h5>
+<p>By default target must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetImagePixels">SetImagePixels</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickPaintTransparentImage">MagickPaintTransparentImage</a></h2>
 <div class="doc-section">
 
-<p>SetImagePixels() queues a mutable pixel region. If the region is successfully intialized a pointer to a PixelPacket array representing the region is returned, otherwise NULL is returned. The returned pointer may point to a temporary working buffer for the pixels or it may point to the final location of the pixels in memory.</p>
-
-<p>Write-only access means that any existing pixel values corresponding to the region are ignored.  This useful while the initial image is being created from scratch, or if the existing pixel values are to be completely replaced without need to refer to their pre-existing values. The application is free to read and write the pixel buffer returned by SetImagePixels() any way it pleases. SetImagePixels() does not initialize the pixel array values. Initializing pixel array values is the application's responsibility.</p>
-
-<p>Performance is maximized if the selected region is part of one row, or one or more full rows, since then there is opportunity to access the pixels in-place (without a copy) if the image is in RAM, or in a memory-mapped file. The returned pointer should *never* be deallocated by the user.</p>
-
-<p>Pixels accessed via the returned pointer represent a simple array of type PixelPacket. If the image type is CMYK or the storage class is PseudoClass, call GetAuthenticIndexQueue() after invoking GetAuthenticPixels() to obtain the black color component or the colormap indexes (of type IndexPacket) corresponding to the region.  Once the PixelPacket (and/or IndexPacket) array has been updated, the changes must be saved back to the underlying image using SyncAuthenticPixels() or they may be lost.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      QueueAuthenticPixels(image,x,y,columns,rows,&image->exception);
-</pre>
+<p>MagickPaintTransparentImage() changes any pixel that matches color with the color defined by fill.</p>
 
-<p>The format of the SetImagePixels() method is:</p>
+<p>The format of the MagickPaintTransparentImage method is:</p>
 
 <pre class="code">
-  PixelPacket *SetImagePixels(Image *image,const ssize_t x,const ssize_t y,
-    const size_t columns,const size_t rows)
+  MagickBooleanType MagickPaintTransparentImage(MagickWand *wand,
+    const PixelWand *target,const double alpha,const double fuzz)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>pixels</h5>
-<p>SetImagePixels returns a pointer to the pixels if they are transferred, otherwise a NULL is returned.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
+
+<h5>target</h5>
+<p>Change this target color to specified opacity value within the image.</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>alpha</h5>
+<p>the level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.</p>
 
-<h5>x,y,columns,rows</h5>
-<p>These values define the perimeter of a region of pixels.</p>
+<h5>fuzz</h5>
+<p>By default target must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetMagickRegistry">SetMagickRegistry</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickRecolorImage">MagickRecolorImage</a></h2>
 <div class="doc-section">
 
-<p>SetMagickRegistry() sets a blob into the registry and returns a unique ID. If an error occurs, -1 is returned.</p>
+<p>MagickRecolorImage() apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects.  Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets).  The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255).</p>
 
-<p>The format of the SetMagickRegistry method is:</p>
+<p>The format of the MagickRecolorImage method is:</p>
 
 <pre class="code">
-  ssize_t SetMagickRegistry(const RegistryType type,const void *blob,
-    const size_t length,ExceptionInfo *exception)
+  MagickBooleanType MagickRecolorImage(MagickWand *wand,
+    const size_t order,const double *color_matrix)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>type</h5>
-<p>the registry type.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>blob</h5>
-<p>the address of a Binary Large OBject.</p>
-
-<h5>length</h5>
-<p>For a registry type of ImageRegistryType use sizeof(Image) otherise the blob length in number of bytes.</p>
+<h5>order</h5>
+<p>the number of columns and rows in the color matrix.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>color_matrix</h5>
+<p>An array of doubles representing the color matrix.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetMonitorHandler">SetMonitorHandler</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickReduceNoiseImage">MagickReduceNoiseImage</a></h2>
 <div class="doc-section">
 
-<p>SetMonitorHandler() sets the monitor handler to the specified method and returns the previous monitor handler.</p>
+<p>MagickReduceNoiseImage() smooths the contours of an image while still preserving edge information.  The algorithm works by replacing each pixel with its neighbor closest in value.  A neighbor is defined by radius.  Use a radius of 0 and ReduceNoise() selects a suitable radius for you.</p>
 
-<p>The format of the SetMonitorHandler method is:</p>
+<p>The format of the MagickReduceNoiseImage method is:</p>
 
 <pre class="code">
-  MonitorHandler SetMonitorHandler(MonitorHandler handler)
+  MagickBooleanType MagickReduceNoiseImage(MagickWand *wand,
+    const double radius)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>handler</h5>
-<p>Specifies a pointer to a method to handle monitors.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
+
+<h5>radius</h5>
+<p>the radius of the pixel neighborhood.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ShiftImageList">ShiftImageList</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickMaximumImages">MagickMaximumImages</a></h2>
 <div class="doc-section">
 
-<p>ShiftImageList() removes an image from the beginning of the list.</p>
-
-<p>Deprecated, replace with:</p>
+<p>MagickMaximumImages() returns the maximum intensity of an image sequence.</p>
 
-<pre class="text">
-      RemoveFirstImageFromList(images);
-</pre>
-
-<p>The format of the ShiftImageList method is:</p>
+<p>The format of the MagickMaximumImages method is:</p>
 
 <pre class="code">
-  Image *ShiftImageList(Image **images)
+  MagickWand *MagickMaximumImages(MagickWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>images</h5>
-<p>the image list.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SpliceImageList">SpliceImageList</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickSetImageAttribute">MagickSetImageAttribute</a></h2>
 <div class="doc-section">
 
-<p>SpliceImageList() removes the images designated by offset and length from the list and replaces them with the specified list.</p>
+<p>MagickSetImageAttribute() associates a property with an image.</p>
 
-<p>The format of the SpliceImageList method is:</p>
+<p>The format of the MagickSetImageAttribute method is:</p>
 
 <pre class="code">
-  Image *SpliceImageList(Image *images,const ssize_t offset,
-    const size_t length,const Image *splices,
-    ExceptionInfo *exception)
+  MagickBooleanType MagickSetImageAttribute(MagickWand *wand,
+    const char *property,const char *value)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>images</h5>
-<p>the image list.</p>
-
-<h5>offset</h5>
-<p>the position within the list.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>length</h5>
-<p>the length of the image list to remove.</p>
-
-<h5>splice</h5>
-<p>Replace the removed image list with this list.</p>
+<h5>property</h5>
+<p>the property.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>value</h5>
+<p>the value.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="Strip">Strip</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickSetImageIndex">MagickSetImageIndex</a></h2>
 <div class="doc-section">
 
-<p>Strip() strips any whitespace or quotes from the beginning and end of a string of characters.</p>
+<p>MagickSetImageIndex() set the current image to the position of the list specified with the index parameter.</p>
 
-<p>The format of the Strip method is:</p>
+<p>The format of the MagickSetImageIndex method is:</p>
 
 <pre class="code">
-  void Strip(char *message)
+  MagickBooleanType MagickSetImageIndex(MagickWand *wand,
+    const ssize_t index)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>message</h5>
-<p>Specifies an array of characters.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
+
+<h5>index</h5>
+<p>the scene number.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SyncCacheView">SyncCacheView</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickTransparentImage">MagickTransparentImage</a></h2>
 <div class="doc-section">
 
-<p>SyncCacheView() saves the cache view pixels to the in-memory or disk cache.  It returns MagickTrue if the pixel region is synced, otherwise MagickFalse.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      SyncCacheViewAuthenticPixels(cache_view,GetCacheViewException(cache_view));
-</pre>
+<p>MagickTransparentImage() changes any pixel that matches color with the color defined by fill.</p>
 
-<p>The format of the SyncCacheView method is:</p>
+<p>The format of the MagickTransparentImage method is:</p>
 
 <pre class="code">
-  MagickBooleanType SyncCacheView(CacheView *cache_view)
+  MagickBooleanType MagickTransparentImage(MagickWand *wand,
+    const PixelWand *target,const double alpha,const double fuzz)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>cache_view</h5>
-<p>the cache view.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SyncCacheViewPixels">SyncCacheViewPixels</a></h2>
-<div class="doc-section">
+<h5>target</h5>
+<p>Change this target color to specified opacity value within the image.</p>
 
-<p>SyncCacheViewPixels() saves the cache view pixels to the in-memory or disk cache.  It returns MagickTrue if the pixel region is flushed, otherwise MagickFalse.</p>
+<h5>alpha</h5>
+<p>the level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.</p>
 
-<p>Deprecated, replace with:</p>
+<h5>fuzz</h5>
+<p>By default target must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.  For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.</p>
 
-<pre class="text">
-      SyncCacheViewAuthenticPixels(cache_view,GetCacheViewException(cache_view));
-</pre>
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickRegionOfInterestImage">MagickRegionOfInterestImage</a></h2>
+<div class="doc-section">
 
-<p>The format of the SyncCacheViewPixels method is:</p>
+<p>MagickRegionOfInterestImage() extracts a region of the image and returns it as a new wand.</p>
+
+<p>The format of the MagickRegionOfInterestImage method is:</p>
 
 <pre class="code">
-  MagickBooleanType SyncCacheViewPixels(CacheView *cache_view)
+  MagickWand *MagickRegionOfInterestImage(MagickWand *wand,
+    const size_t width,const size_t height,const ssize_t x,
+    const ssize_t y)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>cache_view</h5>
-<p>the cache view.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
+
+<h5>width</h5>
+<p>the region width.</p>
+
+<h5>height</h5>
+<p>the region height.</p>
+
+<h5>x</h5>
+<p>the region x offset.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>y</h5>
+<p>the region y offset.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SyncImagePixels">SyncImagePixels</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickSetImagePixels">MagickSetImagePixels</a></h2>
 <div class="doc-section">
 
-<p>SyncImagePixels() saves the image pixels to the in-memory or disk cache. The method returns MagickTrue if the pixel region is synced, otherwise MagickFalse.</p>
+<p>MagickSetImagePixels() accepts pixel datand stores it in the image at the location you specify.  The method returns MagickFalse on success otherwise MagickTrue if an error is encountered.  The pixel data can be either char, short int, int, ssize_t, float, or double in the order specified by map.</p>
 
-<p>Deprecated, replace with:</p>
+<p>Suppose your want to upload the first scanline of a 640x480 image from character data in red-green-blue order:</p>
 
 <pre class="text">
-      SyncAuthenticPixels(image,&image->exception);
+  MagickSetImagePixels(wand,0,0,640,1,"RGB",CharPixel,pixels);
 </pre>
 
-<p>The format of the SyncImagePixels() method is:</p>
+<p>The format of the MagickSetImagePixels method is:</p>
 
 <pre class="code">
-  MagickBooleanType SyncImagePixels(Image *image)
+  MagickBooleanType MagickSetImagePixels(MagickWand *wand,
+    const ssize_t x,const ssize_t y,const size_t columns,
+    const size_t rows,const char *map,const StorageType storage,
+    const void *pixels)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
+
+<h5>x, y, columns, rows</h5>
+<p>These values define the perimeter of a region of pixels you want to define.</p>
+
+<h5>map</h5>
+<p>This string reflects the expected ordering of the pixel array. It can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.</p>
+
+<h5>storage</h5>
+<p>Define the data type of the pixels.  Float and double types are expected to be normalized [0..1] otherwise [0..QuantumRange].  Choose from these types: CharPixel, ShortPixel, IntegerPixel, LongPixel, FloatPixel, or DoublePixel.</p>
+
+<h5>pixels</h5>
+<p>This array of values contain the pixel components as defined by map and type.  You must preallocate this array where the expected length varies depending on the values of width, height, map, and type.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="TemporaryFilename">TemporaryFilename</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="MagickWriteImageBlob">MagickWriteImageBlob</a></h2>
 <div class="doc-section">
 
-<p>TemporaryFilename() replaces the contents of path by a unique path name.</p>
+<p>MagickWriteImageBlob() implements direct to memory image formats.  It returns the image as a blob and its length.   Use MagickSetFormat() to set the format of the returned blob (GIF, JPEG,  PNG, etc.).</p>
 
-<p>The format of the TemporaryFilename method is:</p>
+<p>Use MagickRelinquishMemory() to free the blob when you are done with it.</p>
+
+<p>The format of the MagickWriteImageBlob method is:</p>
 
 <pre class="code">
-  void TemporaryFilename(char *path)
+  unsigned char *MagickWriteImageBlob(MagickWand *wand,size_t *length)
 </pre>
 
-<p>A description of each parameter follows.</p>
+<p>A description of each parameter follows:</p>
+
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5> path</h5>
-<p>Specifies a pointer to an array of characters.  The unique path name is returned in this array.</p>
+<h5>length</h5>
+<p>the length of the blob.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ThresholdImage">ThresholdImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="NewPixelView">NewPixelView</a></h2>
 <div class="doc-section">
 
-<p>ThresholdImage() changes the value of individual pixels based on the intensity of each pixel compared to threshold.  The result is a high-contrast, two color image.</p>
+<p>NewPixelView() returns a pixel view required for all other methods in the Pixel View API.</p>
 
-<p>The format of the ThresholdImage method is:</p>
+<p>The format of the NewPixelView method is:</p>
 
 <pre class="code">
-  unsigned int ThresholdImage(Image *image,const double threshold)
+  PixelView *NewPixelView(MagickWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>threshold</h5>
-<p>Define the threshold value</p>
+<h5>wand</h5>
+<p>the wand.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ThresholdImageChannel">ThresholdImageChannel</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="NewPixelViewRegion">NewPixelViewRegion</a></h2>
 <div class="doc-section">
 
-<p>ThresholdImageChannel() changes the value of individual pixels based on the intensity of each pixel channel.  The result is a high-contrast image.</p>
+<p>NewPixelViewRegion() returns a pixel view required for all other methods in the Pixel View API.</p>
 
-<p>The format of the ThresholdImageChannel method is:</p>
+<p>The format of the NewPixelViewRegion method is:</p>
 
 <pre class="code">
-  unsigned int ThresholdImageChannel(Image *image,const char *threshold)
+  PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
+    const ssize_t y,const size_t width,const size_t height)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>wand</h5>
+<p>the magick wand.</p>
 
-<h5>threshold</h5>
-<p>define the threshold values.</p>
+<h5>x,y,columns,rows</h5>
+<p>These values define the perimeter of a region of pixel_wands view.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="TransformHSL">TransformHSL</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PixelGetNextRow">PixelGetNextRow</a></h2>
 <div class="doc-section">
 
-<p>TransformHSL() converts a (red, green, blue) to a (hue, saturation, lightness) triple.</p>
+<p>PixelGetNextRow() returns the next row as an array of pixel wands from the pixel iterator.</p>
 
-<p>The format of the TransformHSL method is:</p>
+<p>The format of the PixelGetNextRow method is:</p>
 
 <pre class="code">
-  void TransformHSL(const Quantum red,const Quantum green,
-    const Quantum blue,double *hue,double *saturation,double *lightness)
+  PixelWand **PixelGetNextRow(PixelIterator *iterator,
+    size_t *number_wands)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>red, green, blue</h5>
-<p>A Quantum value representing the red, green, and blue component of a pixel..</p>
+<h5>iterator</h5>
+<p>the pixel iterator.</p>
 
-<h5>hue, saturation, lightness</h5>
-<p>A pointer to a double value representing a component of the HSL color space.</p>
+<h5>number_wands</h5>
+<p>the number of pixel wands.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="TranslateText">TranslateText</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="PixelIteratorGetException">PixelIteratorGetException</a></h2>
 <div class="doc-section">
 
-<p>TranslateText() replaces any embedded formatting characters with the appropriate image attribute and returns the translated text.</p>
-
-<p>Deprecated, replace with:</p>
-
-<pre class="text">
-      InterpretImageProperties(image_info,image,embed_text);
-</pre>
+<p>PixelIteratorGetException() returns the severity, reason, and description of any error that occurs when using other methods in this API.</p>
 
-<p>The format of the TranslateText method is:</p>
+<p>The format of the PixelIteratorGetException method is:</p>
 
 <pre class="code">
-  char *TranslateText(const ImageInfo *image_info,Image *image,
-    const char *embed_text)
+  char *PixelIteratorGetException(const Pixeliterator *iterator,
+    ExceptionType *severity)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image_info</h5>
-<p>the image info.</p>
+<h5>iterator</h5>
+<p>the pixel iterator.</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>embed_text</h5>
-<p>the address of a character string containing the embedded formatting characters.</p>
+<h5>severity</h5>
+<p>the severity of the error is returned here.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="TransparentImage">TransparentImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="SetPixelViewIterator">SetPixelViewIterator</a></h2>
 <div class="doc-section">
 
-<p>TransparentImage() changes the opacity value associated with any pixel that matches color to the value defined by opacity.</p>
+<p>SetPixelViewIterator() iterates over the pixel view in parallel and calls your set method for each scanline of the view.  The pixel region is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension.  The pixels are initiallly undefined and any settings you make in the callback method are automagically synced back to your image.</p>
 
-<p>By default color must match a particular pixel color exactly.  However, in many cases two colors may differ by a small amount.  Fuzz defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.</p>
+<p>Use this pragma:</p>
 
-<p>The format of the TransparentImage method is:</p>
+<pre class="text">
+      #pragma omp critical
+</pre>
+
+<p>to define a section of code in your callback set method that must be executed by a single thread at a time.</p>
+
+<p>The format of the SetPixelViewIterator method is:</p>
 
 <pre class="code">
-  MagickBooleanType TransparentImage(Image *image,
-    const PixelPacket target,const Quantum opacity)
+  MagickBooleanType SetPixelViewIterator(PixelView *destination,
+    SetPixelViewMethod set,void *context)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>destination</h5>
+<p>the pixel view.</p>
 
-<h5>target</h5>
-<p>the RGB value of the target color.</p>
+<h5>set</h5>
+<p>the set callback method.</p>
 
-<h5>opacity</h5>
-<p>the replacement opacity value.</p>
+<h5>context</h5>
+<p>the user defined context.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="UnshiftImageList">UnshiftImageList</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="TransferPixelViewIterator">TransferPixelViewIterator</a></h2>
 <div class="doc-section">
 
-<p>UnshiftImageList() adds the image to the beginning of the list.</p>
+<p>TransferPixelViewIterator() iterates over two pixel views in parallel and calls your transfer method for each scanline of the view.  The source pixel region is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension. However, the destination pixel view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p>
 
-<p>Deprecated, replace with:</p>
+<p>Use this pragma:</p>
 
 <pre class="text">
-      PrependImageToList(images,CloneImageList(image,exception));
+      #pragma omp critical
 </pre>
 
-<p>The format of the UnshiftImageList method is:</p>
+<p>to define a section of code in your callback transfer method that must be executed by a single thread at a time.</p>
+
+<p>The format of the TransferPixelViewIterator method is:</p>
 
 <pre class="code">
-  unsigned int UnshiftImageList(Image *images,const Image *image,
-    ExceptionInfo *exception)
+  MagickBooleanType TransferPixelViewIterator(PixelView *source,
+    PixelView *destination,TransferPixelViewMethod transfer,void *context)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>images</h5>
-<p>the image list.</p>
+<h5>source</h5>
+<p>the source pixel view.</p>
+
+<h5>destination</h5>
+<p>the destination pixel view.</p>
 
-<h5>image</h5>
-<p>the image.</p>
+<h5>transfer</h5>
+<p>the transfer callback method.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>context</h5>
+<p>the user defined context.</p>
 
  </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="ZoomImage">ZoomImage</a></h2>
+<h2><a href="http://www.imagemagick.org/api/MagickCore/deprecate_8c.html" id="UpdatePixelViewIterator">UpdatePixelViewIterator</a></h2>
 <div class="doc-section">
 
-<p>ZoomImage() creates a new image that is a scaled size of an existing one. It allocates the memory necessary for the new Image structure and returns a pointer to the new image.  The Point filter gives fast pixel replication, Triangle is equivalent to bi-linear interpolation, and Mitchel giver slower, very high-quality results.  See Graphic Gems III for details on this algorithm.</p>
+<p>UpdatePixelViewIterator() iterates over the pixel view in parallel and calls your update method for each scanline of the view.  The pixel region is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.  Updates to pixels in your callback are automagically synced back to the image.</p>
+
+<p>Use this pragma:</p>
+
+<pre class="text">
+      #pragma omp critical
+</pre>
 
-<p>The filter member of the Image structure specifies which image filter to use. Blur specifies the blur factor where > 1 is blurry, < 1 is sharp.</p>
+<p>to define a section of code in your callback update method that must be executed by a single thread at a time.</p>
 
-<p>The format of the ZoomImage method is:</p>
+<p>The format of the UpdatePixelViewIterator method is:</p>
 
 <pre class="code">
-  Image *ZoomImage(const Image *image,const size_t columns,
-    const size_t rows,ExceptionInfo *exception)
+  MagickBooleanType UpdatePixelViewIterator(PixelView *source,
+    UpdatePixelViewMethod update,void *context)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
-<h5>image</h5>
-<p>the image.</p>
-
-<h5>columns</h5>
-<p>An integer that specifies the number of columns in the zoom image.</p>
+<h5>source</h5>
+<p>the source pixel view.</p>
 
-<h5>rows</h5>
-<p>An integer that specifies the number of rows in the scaled image.</p>
+<h5>update</h5>
+<p>the update callback method.</p>
 
-<h5>exception</h5>
-<p>return any errors or warnings in this structure.</p>
+<h5>context</h5>
+<p>the user defined context.</p>
 
  </div>
 \r
index 90395f442394c149c5240a75dcf3bfb760075cdc..17df38c6147988576b335759fa214e6f4b17edcf 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index a2e50233473d51522e86223760e9de314a04463b..87486ca12b9cef93eafaadc8d72546f137d59813 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index 847be1e66c8e0f2c978fb8636646a19ce69a84c0..02eb126a4b2fc3dbc6f45f5cadaef8ad0608b58f 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
 </div>
 </div>
 </div>
index b896f339353fc006a96c1465dbbb326294a531e9..05df92cb675be3c48ea4408f6532eb7b33e485ec 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
 <h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand_8c.html" id="ClearDrawingWand">ClearDrawingWand</a></h2>
 <div class="doc-section">
 
-<p>ClearDrawingWand() clear resources associated with the drawing wand.</p>
+<p>ClearDrawingWand() clears resources associated with the drawing wand.</p>
 
 <p>The format of the ClearDrawingWand method is:</p>
 
 <pre class="code">
-  DrawingWand *ClearDrawingWand(DrawingWand *wand)
+  void ClearDrawingWand(DrawingWand *wand)
 </pre>
 
 <p>A description of each parameter follows:</p>
 
 <h5>wand</h5>
-<p>the drawing wand. to destroy</p>
+<p>the drawing wand to clear.</p>
 
  </div>
 <h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand_8c.html" id="CloneDrawingWand">CloneDrawingWand</a></h2>
 <p>A description of each parameter follows:</p>
 
 <h5>wand</h5>
-<p>the drawing wand. to destroy</p>
+<p>the drawing wand to destroy.</p>
 
  </div>
 <h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand_8c.html" id="DrawAffine">DrawAffine</a></h2>
index 0f6315eeb7b8c19d45c94aa0d55a39707629660f..0e613d015e3619943b1a3a10da8b76ccc2407929 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
 </div>
 </div>
 </div>
index fb475777ba92d3c5e2ceee5ef841e5de5d90b26e..4cd256ec2de05bb6b0e90c2899eaa12099d68850 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
 </div>
 </div>
 </div>
index 0a3694a4d62c38317ec2159fc0977fb2895b5a3d..463601b1c2aa45bb9c90ec2612475f0c6d51326b 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
index 689ea45bd2255130081def0b7c696ccf3c6e63d3..a32b2c2868fd0e7094f86696a750de48c4830601 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index 2fc6814814f54c64e2c2e7f97cdd7b6078786dc3..38599406ac4c790a938068df304359f5aad0aa59 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
 </div>
 </div>
 </div>
index 787ed9bc6d54e85d4b229e1c8a6abca505462100..e2a3597ec38f1e4e11f0219a3bf3cd60165aa4ac 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
 </div>
 </div>
 </div>
index 20fa830d7d5448dc7671cf7cb61bcb40b935dd1e..1f7cadeef822e5163d95a2ebc655fccea4a21aa9 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
 </div>
 </div>
 </div>
index 78e41dacfb6c3e2d4f0ddd9819e6f554d71f9c4f..835dc4a09de2dc3de0ce552045aab9d0fa87516e 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
index a12243994543387b6eec684e5b334e0b908d5df4..da8005cdbd5e44562a1111f75bd80411325ddf6c 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
index 6a6e49e0e2e16c2e415c6fdf69a09570e6b4fd9e..484e4d79fe1cfc81da07dad325b7ceed2755fbdb 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index 73e1df6970be3fde8eaba233abd6fc1b29b454f7..0a3afdb82bbff03110a6a6d8fabc2cb93720f91b 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
 </div>
 </div>
 </div>
index 89af9c75f8f68804cffa675d084537d75c3d5a96..dd2d312e870c81ed6a8679e1d0d93c64cf22bbd9 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
index 0b86ad287d983651e8a07ae0d1fa35296b06690e..2cba4e42f1aa24aa9d8527a7c592b2a7e92a223a 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 9239d56fa0a86f5107ebbd686e1819d34ece7304..e1669c1df07d9c27d0eded6b0cdf213fd8b9347c 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 9a6b1b4132c6922045c7ff06a32dc9575247a501..1ea60f33d74598287fd0c740e9f8832da472e57d 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
+   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
 </div>
 </div>
 </div>
index f0760201bddb48b8f20c648b831e5ab8691935fc..967dd44b09a25fefe8c4699b8763026e739ce447 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index 0b6d7bb54a9cc8f6506b553ce31581798079cde0..23339ecda9857361a759bc6c250ef29089806787 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
 <h2><a href="http://www.imagemagick.org/api/MagickWand/mogrify_8c.html" id="**_SparseColorOption">** SparseColorOption</a></h2>
 <div class="doc-section">
 
-<p>** SparseColorOption() parse the complex -sparse-color argument into an ** an array of floating point values than call SparseColorImage(). ** Argument is a complex mix of floating-point pixel coodinates, and color ** specifications (or direct floating point numbers).  The number of floats ** needed to represent a color varies depending on teh current channel ** setting. </p>
+<p>** SparseColorOption() parses the complex -sparse-color argument into an ** an array of floating point values then calls SparseColorImage(). ** Argument is a complex mix of floating-point pixel coodinates, and color ** specifications (or direct floating point numbers).  The number of floats ** needed to represent a color varies depending on the current channel ** setting. </p>
  </div>
 \r
 </div>\r
index fc9a4561d74c4d6955cfaf7d26bd52c00cec889b..7f42dffd3ef2089b74ae1c56bb561fed68572b5f 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index 77ac4ef617047dac62bbe0b2fa80d6c4c2c0589a..a3b3c5765dc2809a3e71abc0458f6683caa6ce86 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index a02196157be06d7ec021faf0a4fc85b592c1ca3d..6c151e5562caaa03f42dff5e81e31d77d869730b 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index bc50770e8366711d556b858aacf07f58b206a121..f7f90b364c45177c92176e4b9ccc819402ce6235 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index fc1b7917703aba32751b4b7b7cd36c9185507cb2..36bce5790bb64083294d62e534dd656e16a69693 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index 4176f0502889a401575b1078d071828482a4ca94..e186ef0d6ef8ab8fc7fb13db6d5f7b5945f684cb 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index 2d3ad5cb1d50bad9c65db85851910b8eb61ba3e3..3973233b01f40ebcf1baa8b05f70b7edec666735 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
index 3b56195e69fa7c55dec17856b7248c9af4f21892..4cc2e3a38e92b12c196a34d6f6a95b33248bfa49 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index 08bfba4394532aad08c9a3e0a5cef6343db9334b..7101c52ac34a3b81e115ad4a6e32ecf3381f7d04 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
index d89428847865aaf206c7ef5502eef83b42107927..927f7eed5289757f5f3ec173f924ab13326a9432 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
index 094acaf42f091d0f8d088603af818786d1f2c31b..8643ed3c77c7c7be72ceded6f2c871d9192963d4 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
 </div>
 </div>
 </div>
index 03cd485a0f258e26827feac376654a640aab2baf..0cc92055f1976391e000d906185775f8d63bbf38 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
 </div>
 </div>
 </div>
index 536699e3281f7bd0c803da30e3cd8ee68f5d3540..0f3ee48c5860b90ecf76b2463510a4d90767d3e6 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
index 8e2762f1baa64b0a1bcf985807f698f9705090b8..ca131f8274ab399daf4503d4255cc532cac1f3b7 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 80b2e3157fa23fc6b52caf3abd3cba5a03366adc..cbc9252c97f3450675df5d0e154583cf2f912e63 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index ad6230bc86971f9d4129d229b6b86bc3a5172bba..84dad49d33f979dbe11056de25bf46f2a4490225 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
 </div>
 </div>
 </div>
index 65b107c283417408114340fb6f1d88e19d8230af..c593c586fa9a128dbe6b623ab51a4b2d466735d6 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
 
 <p>When the pixel cache is initialized, pixels are scaled from whatever bit depth they originated from to that required by the pixel cache.  For example, a 1-channel 1-bit monochrome PBM image is scaled to a 4 channel 8-bit RGBA image, if you are using the Q8 version of ImageMagick, and 16-bit RGBA for the Q16 version.  You can determine which version you have with the <a href="../www/command-line-options.html#version">&#x2011;version</a> option: </p>
 
-<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>identify -version</span><span class='crtout'>Version: ImageMagick 6.6.9-7 2011-04-06 Q16 http://www.imagemagick.org</span></p>
+<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>identify -version</span><span class='crtout'>Version: ImageMagick 6.6.9-8 2011-04-06 Q16 http://www.imagemagick.org</span></p>
 <p>As you can see, the convenience of the pixel cache sometimes comes with a trade-off in storage (e.g. storing a 1-bit monochrome image as 16-bit RGBA is wasteful) and speed (i.e. storing the entire image in memory is generally slower than accessing one scanline of pixels at a time).  In most cases, the benefits of the pixel cache typically outweigh any disadvantages.</p>
 </div>
 
       break;
     indexes=GetVirtualIndexes(source);
     for (x=0; x &lt; (ssize_t) source-&gt;columns; x++)
-      (void) printf("%d\n",indexes[x]);
+      (void) printf("%d\n",GetIndexPixelComponent(indexes+x));
   }
   if (y &lt; (ssize_t) source-&gt;rows)
     /* an exception was thrown */
@@ -639,12 +639,12 @@ image=ReadStream(image_info,&amp;StreamPixels,exception);
     indexes=GetCacheViewAuthenticIndexQueue(image_view);
     for (x=0; x &lt; (ssize_t) image-&gt;columns; x++)
     {
-      q-&gt;red= ...
-      q-&gt;green= ...
-      q-&gt;blue= ...
-      q-&gt;opacity= ...
+      SetRedPixelComponent(q,...);
+      SetGreenPixelComponent(q,...);
+      SetBluePixelComponent(q,...);
+      SetOpacityPixelComponent(q,...);
       if (indexes != (IndexPacket *) NULL)
-        indexes[x]= ...
+        SetIndexPixelComponent(indexes+x,...);
       q++;
     }
     if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
@@ -691,11 +691,11 @@ void ConvertBMPToImage(const BITMAPINFOHEADER *bmp_info,
       image->setPixels(0,y,image->columns(),1);
     for (int x=0; x &lt; int(image->columns()); x++)
     {
-      q->blue=p[0];
-      q->green=p[1];
-      q->red=p[2];
+      SetBluePixelComponent(q,p[0]);
+      SetGreenPixelComponent(q,p[1]);
+      SetRedPixelComponent(q,p[2]);
       if (bmp_info->biBitCount == 32) {
-        q->opacity=p[3];
+        SetOpacityPixelComponent(q,p[3]);
       }
       q++;
       p+=bmp_info->biBitCount/8;
index cdf63c87529a20fadf3694967475a9826e772a8f..fd840aa7f9357ba0ba9ec73bdb8e7d5563be3ce8 100644 (file)
   </tr>
 
   <tr>
-      <td valign="top">ImageMagick-6.6.9-7.i386.rpm</td>
-    <td valign="top"><a href= "http://www.imagemagick.org/download/linux/CentOS/i386/ImageMagick-6.6.9-7.i386.rpm">download</a></td>
-    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS/i386/ImageMagick-6.6.9-7.i386.rpm">download</a></td>
+      <td valign="top">ImageMagick-6.6.9-8.i386.rpm</td>
+    <td valign="top"><a href= "http://www.imagemagick.org/download/linux/CentOS/i386/ImageMagick-6.6.9-8.i386.rpm">download</a></td>
+    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS/i386/ImageMagick-6.6.9-8.i386.rpm">download</a></td>
     <td valign="top">CentOS 5.4 i386 RPM</td>
   </tr>
 
   <tr>
-      <td valign="top">ImageMagick-6.6.9-7.x86_64.rpm</td>
-      <td valign="top"><a href= "http://www.imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-6.6.9-7.x86_64.rpm">download</a></td>
-    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS/x86_64/ImageMagick-6.6.9-7.x86_64.rpm">download</a></td>
+      <td valign="top">ImageMagick-6.6.9-8.x86_64.rpm</td>
+      <td valign="top"><a href= "http://www.imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-6.6.9-8.x86_64.rpm">download</a></td>
+    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS/x86_64/ImageMagick-6.6.9-8.x86_64.rpm">download</a></td>
     <td valign="top">CentOS 5.4 x86_64 RPM</td>
   </tr>
 
 
 <p>ImageMagick RPM's are self-installing.  Simply type the following command and you're ready to start using ImageMagick:</p>
 
-<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>rpm -Uvh ImageMagick-6.6.9-7.i386.rpm</span></p>
+<p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>rpm -Uvh ImageMagick-6.6.9-8.i386.rpm</span></p>
 <p>For other systems, create (or choose) a directory to install the package into and change to that directory, for example:</p>
 
 <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>cd $HOME</span></p>
 <pre class="text">
        ./imagemagick_compile.sh <em>VERSION</em>
 </pre>
-<p>where <em>VERSION</em> is the version of ImageMagick you want to compile (i.e.: 6.6.9-7, svn, ...)</p>
+<p>where <em>VERSION</em> is the version of ImageMagick you want to compile (i.e.: 6.6.9-8, svn, ...)</p>
 
 <p>This script compiles ImageMagick as a static library to be included in iPhone projects and adds support for</p>
 <ul>
 <p>The amount of memory can be an important factor, especially if you intend to work on large images.  A minimum of 512 MB of RAM is recommended, but the more RAM the better.  Although ImageMagick runs well on a single core computer, it automagically runs in parallel on multi-core systems reducing run times considerably.</p>
 
 <p>The Windows version of ImageMagick is self-installing.  Simply click on the appropriate version below and it will launch itself and ask you a few installation questions.  Versions with <em>Q8</em> in the name are 8 bits-per-pixel component (e.g. 8-bit red, 8-bit green, etc.), whereas,  <em>Q16</em> in the filename are 16 bits-per-pixel component. A Q16 version permits you to read or write 16-bit images without losing precision but requires twice as much resources as the Q8 version.  Versions with <em>dll</em> in the filename include ImageMagick libraries as <a href="http://www.answers.com/topic/dll">dynamic link libraries</a>. If you are not sure which version is appropriate, choose
-<a href='http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-7-Q16-windows-dll.exe'>ImageMagick-6.6.9-7-Q16-windows-dll.exe</a>.</p>
+<a href='http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-8-Q16-windows-dll.exe'>ImageMagick-6.6.9-8-Q16-windows-dll.exe</a>.</p>
 
 <table class="doc">
   <col width="50%"/> <col width="10%"/> <col width="10%"/> <col width="30%"/>
   </tr>
 
   <tr>
-        <td valign="top">ImageMagick-6.6.9-7-Q16-windows-dll.exe</td>
-        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-7-Q16-windows-dll.exe">download</a></td>
-      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-7-Q16-windows-dll.exe">download</a></td>
+        <td valign="top">ImageMagick-6.6.9-8-Q16-windows-dll.exe</td>
+        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-8-Q16-windows-dll.exe">download</a></td>
+      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-8-Q16-windows-dll.exe">download</a></td>
     <td valign="top">Win32 dynamic at 16 bits-per-pixel</td>
   </tr>
 
   <tr>
-        <td valign="top">ImageMagick-6.6.9-7-Q16-windows-static.exe</td>
-        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-7-Q16-windows-static.exe">download</a></td>
-      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-7-Q16-windows-static.exe">download</a></td>
+        <td valign="top">ImageMagick-6.6.9-8-Q16-windows-static.exe</td>
+        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-8-Q16-windows-static.exe">download</a></td>
+      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-8-Q16-windows-static.exe">download</a></td>
     <td valign="top">Win32 static at 16 bits-per-pixel</td>
   </tr>
 
   <tr>
-        <td valign="top">ImageMagick-6.6.9-7-Q8-windows-dll.exe</td>
-        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-7-Q8-windows-dll.exe">download</a></td>
-      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-7-Q8-windows-dll.exe">download</a></td>
+        <td valign="top">ImageMagick-6.6.9-8-Q8-windows-dll.exe</td>
+        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-8-Q8-windows-dll.exe">download</a></td>
+      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-8-Q8-windows-dll.exe">download</a></td>
     <td valign="top">Win32 dynamic at 8 bits-per-pixel</td>
   </tr>
 
   <tr>
-        <td valign="top">ImageMagick-6.6.9-7-Q8-windows-static.exe</td>
-        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-7-Q8-windows-static.exe">download</a></td>
-      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-7-Q8-windows-static.exe">download</a></td>
+        <td valign="top">ImageMagick-6.6.9-8-Q8-windows-static.exe</td>
+        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-8-Q8-windows-static.exe">download</a></td>
+      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-8-Q8-windows-static.exe">download</a></td>
     <td valign="top">Win32 static at 8 bits-per-pixel</td>
   </tr>
 
   <tr>
-        <td valign="top">ImageMagick-6.6.9-7-Q16-windows-x64-dll.exe</td>
-        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-7-Q16-windows-x64-dll.exe">download</a></td>
-      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-7-Q16-windows-x64-dll.exe">download</a></td>
+        <td valign="top">ImageMagick-6.6.9-8-Q16-windows-x64-dll.exe</td>
+        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-8-Q16-windows-x64-dll.exe">download</a></td>
+      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-8-Q16-windows-x64-dll.exe">download</a></td>
    <td valign="top">Win64 dynamic at 16 bits-per-pixel</td>
   </tr>
 
   <tr>
-        <td valign="top">ImageMagick-6.6.9-7-Q16-windows-x64-static.exe</td>
-        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-7-Q16-windows-x64-static.exe">download</a></td>
-      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-7-Q16-windows-x64-static.exe">download</a></td>
+        <td valign="top">ImageMagick-6.6.9-8-Q16-windows-x64-static.exe</td>
+        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-6.6.9-8-Q16-windows-x64-static.exe">download</a></td>
+      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-6.6.9-8-Q16-windows-x64-static.exe">download</a></td>
    <td valign="top">Win64 static at 16 bits-per-pixel</td>
   </tr>
 
index 62a2fe0ca5ddace2339a02e20da57e4f4ead57f5..195bec5e30eb301cd5741f8e3007fccfac8bc85c 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
 <div class="main">\r
 \r
 <h1>ImageMagick Changelog</h1>
-<dl><dt>2011-04-30  6.6.9-7 Cristy  &lt;quetzlzacatenango@image...&gt;</dt>
+<dl><dt>2011-05-02  6.6.9-8 Glenn Randers-Pehrson &lt;glennrp@image...&gt;</dt>
+  <dd> Fixed some cut-and-paste errors in new png.c code that caused PNG8    reductions to fail.</dd>
+<dt>2011-05-02  6.6.9-8 Anthony Thyssen &lt;A.Thyssen@griffith...&gt;</dt>
+  <dd> Add various Option Flags, and fix option skip counts for plus forms    of simple operators where plus form is the same as minus form.    For example the incorrect counts produces a weird error, and posible    future segmentation fault in a command like  convert rose: +border show:</dd>
+<dt>2011-04-30  6.6.9-7 Cristy  &lt;quetzlzacatenango@image...&gt;</dt>
   <dd> New version 6.6.9-7.</dd>
 <dt>2011-04-30  6.6.9-7 Anthony Thyssen &lt;A.Thyssen@griffith...&gt;</dt>
   <dd> Fix FX default for interpolation to Bilinear.</dd>
index a52de701027642efb634cbdd6dd2b289532bb608..4fe35725b20d89b1dd5e75cdb09b35cdb0d60209 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
 </div>
 </div>
 </div>
index c3a71e2f6cf5b44e63f3c676466ee7c6f0f4251d..6c8c009e44afc913cc75bb3aff7db06e6605ce71 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
index a8703c2c58a4b5cf4069f7f668bab30c3d427ab1..50df8abb392f68885cc10b6335c3d95e3d9fc980 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
@@ -1041,15 +1041,15 @@ a <a href="#gravity">-gravity</a> setting, if present.</p>
 <p>The <a href="#chop">-chop</a> option removes entire rows and columns,
 and moves the remaining corner blocks leftward and upward to close the gaps.</p>
 
-<p>While it can remove internal rows and columns of pixels, it is more typically
-used with as <a href="#gravity">-gravity</a> setting and a '<kbd>+0+0</kbd>' offset
-so as to remove a single edge from an image.  Compare this to <a href="#shave"
->-shave</a> whcih removes equal numbers of pixels from oppisite sides of the image.
-</p>
+<p>While it can remove internal rows and columns of pixels, it is more
+typically used with as <a href="#gravity">-gravity</a> setting and zero
+offsets so as to remove a single edge from an image.  Compare this to <a
+href="#shave" >-shave</a> which removes equal numbers of pixels from oppisite
+sides of the image.  </p>
 
-<p>Using <a href="#chop">-chop</a> will effectivally undo the results of a
-<a href="#splice">-splice</a> that was given the same <em class="arg">geometry</em>
-and <a href="#gravity">-gravity</a> settings. </p>
+<p>Using <a href="#chop">-chop</a> will effectivally undo the results of a <a
+href="#splice">-splice</a> that was given the same <em
+class="arg">geometry</em> and <a href="#gravity">-gravity</a> settings. </p>
 
 
 <div style="margin: auto;">
@@ -4227,9 +4227,16 @@ bgr).  The components can repeat as well (e.g. rgbr).</p>
 <em class="arg">filename</em></h4>
 </div>
 
-<table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>Composite the image pixels as defined by the mask.</td><td style='text-align:right;'></td></tr></table>
+<table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>Prevent updates to image pixels specified by the mask.</td><td style='text-align:right;'></td></tr></table>
+
+<p>This the same as using a mask used for composite masking operations, with
+grayscale values causing blended updates of the image the mask is attached to.
+</P>
 
-<p>Use <a href="#mask">+mask</a> to remove the image mask.</p>
+<p>Use <a href="#mask">+mask</a> to remove the mask from images.</p>
+
+<p>Also see <a href="#clip-mask">-clip-mask</a> which work in the same way,
+but with strict boolean masking. </p>
 
 <div style="margin: auto;">
   <h4><a id="mattecolor"></a>-mattecolor <em class="arg">color</em></h4>
@@ -4248,12 +4255,22 @@ style="background-color: #bdbdbd;">this shade of gray</span>.</p>
 
 <table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>return the maximum intensity of an image sequence.</td><td style='text-align:right;'></td></tr></table>
 
+<p>Select the 'maximum' value from all the surrounding pixels. </p>
+
+<p>This is legacy option from the <a href="#statistic" >method</A> of the same
+name. </p>
+
 <div style="margin: auto;">
   <h4><a id="median"></a>-median <em class="arg">geometry</em></h4>
 </div>
 
 <table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>apply a median filter to the image.</td><td style='text-align:right;'></td></tr></table>
 
+<p>Select the 'middle' value from all the surrounding pixels. </p>
+
+<p>This is legacy option from the <a href="#statistic" >method</A> of the same
+name. </p>
+
 <div style="margin: auto;">
   <h4><a id="metric"></a>-metric <em class="arg">type</em></h4>
 </div>
@@ -4295,6 +4312,12 @@ metrics</a> option.</p>
 
 <table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>return the minimum intensity of an image sequence.</td><td style='text-align:right;'></td></tr></table>
 
+<p>Select the 'minimal' value from all the surrounding pixels. </p>
+
+<p>This is legacy option from the <a href="#statistic" >method</A> of the same
+name. </p>
+
+
 
 <div style="margin: auto;">
   <h4><a id="mode"></a>-mode <em class="arg">geometry</em></h4>
@@ -5380,6 +5403,19 @@ id="shared-memory"></a>-shared-memory</h4>
     <th align="left">Description</th>
   </tr>
 
+  <tr valign="top">
+    <td valign="top">barycentric</td>
+    <td valign="top">three point triangle of color given 3 points.
+        Giving only 2 points will form a linear gradient between those points.
+        The gradient generated extends beyond the triangle created by those
+        3 points. </td>
+  </tr>
+
+  <tr valign="top">
+    <td valign="top">bilinear</td>
+    <td valign="top">Like barycentric but for 4 points. Less than 4 points
+        fall back to barycentric. </td>
+  </tr>
   <tr valign="top">
     <td valign="top">voronoi</td>
     <td valign="top">Simply map each pixel to the to nearest color point
@@ -5391,19 +5427,14 @@ id="shared-memory"></a>-shared-memory</h4>
     <td valign="top">Colors points biased on the ratio of inverse distance
         squared. Generating spots of color in a sea of the average of
         colors. </td>
-    </tr>
-
-  <tr valign="top">
-    <td valign="top">barycentric</td>
-    <td valign="top">three point triangle of color given 3 points.
-        Giving only 2 points will form a linear gradient between those points.
-        Gradient is however not restricted to just the triangle or line. </td>
   </tr>
 
   <tr valign="top">
-    <td valign="top">bilinear</td>
-    <td valign="top">Like barycentric but for 4 points. Less than 4 points
-        fall back to barycentric. </td>
+    <td valign="top">inverse</td>
+    <td valign="top">Colors points biased on the ratio of inverse distance.
+        This generates sharper points of color rather than rounded spots of
+        '<kbd>shepards</kbd>'  Generating spots of color in a sea of the
+        average of colors. </td>
   </tr>
 
   </tbody>
@@ -5416,10 +5447,13 @@ some point beyond the edge of the image. All points are floating point values.
 </p>
 
 <p>Only the color channels defined by the <a href="#channel" >-channel</a> are
-modified, whcih means the matte/alpha transparency channel is not effected by
-default. If enabled, the image also needs a the matte/alpha channel to be
-enabled for this operator to effect an images transparency. This is typical
-transparency handling for images. </p>
+modified, which means that by default matte/alpha transparency channel is not
+effected. Typically transparency channel is turned off either before or after
+the operation. </P>
+
+Of course if some color points are transparent to generate a transparent
+gradient, then the image also requires transparency enabled to store the
+values. </p>
 
 <p>All the above methods when given a single point of color will replace all
 the colors in the image with the color given, regardless of the point. This is
@@ -5433,7 +5467,21 @@ default value. </p>
 
 <table style='background-color:#FFFFE0; margin-left:40px; margin-right:40px; width:88%'><tr><td style='width:75%'>Splice the current background color into the image.</td><td style='text-align:right;'></td></tr></table>
 
-<p>See <a href="../www/command-line-processing.html#geometry">Image Geometry</a> for complete details about the <em class="arg">geometry</em> argument. See <a href="#background">-background</a> to reset the background color.</p>
+<p>This will add rows and columns of the current <a
+href="#background">-background</a> color into the given image according to the
+given  <a href="#gravity">-gravity</a> effectd geometry setting.  >See <a href="../www/command-line-processing.html#geometry">Image Geometry</a> for complete details about the <em class="arg">geometry</em> argument. Essentually <a href="#splice">-splice</a> will divide the
+image into four quadrants, separating them by the inserted rows and columns.
+</P>
+
+If a dimension of geometry is zero no rows or columns will be added for that
+dimension.  Similarly using a zero offset with the appropriate <a
+href="#gravity">-gravity</a> setting will add rows and columns to the edges of
+the image, padding the image only along that one edge. Edge padding is what <a
+href="#splice">-splice</a> is most commonly used for. </p>
+
+<p>If the exact same  <em class="arg">geometry</em> and <a
+href="#gravity">-gravity</a> is later used with <a href="#chop">-chop</a> the
+added added all splices removed. </p>
 
 <div style="margin: auto;">
   <h4><a id="spread"></a>-spread <em class="arg">amount</em></h4>
index a65024fcb0006b95e2c2fd985e1ccc10896c7785..32e45a48751489bd638a87193ce5377310c86173 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index f24e2578c8b7b1584a8386b61f1a2aa0f38e4e3b..20205fe59f63f143cf74c85c28a7bf1ceb678141 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 436cb01de1460ce6e4ddd28c436b96a8e7960b87..995acf1d41e698d5087a5053c0ec2d8bf9510bc4 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index 6caff70620d70ff3ae9520ef60246c5c43f46934..07b835c9d8d00594f0ca7b7aa4a7e69214f571f2 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index a5b3a33d101ca0a0f8dbfb34420639adcbcbd3b0..a5b3be7c400b7e8b0b192ed22a15661426ea75fc 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
 </div>
 </div>
 </div>
index 58ed24e795382f388eb4283b406a2020d7d34126..d7b7eecf216b8c9bc5d8e597b70837c93a1f3019 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
index c1e4c6aaf0a1bf249842e760a63b97cfe1594345..3c9733090688bb6cef1c48957f09476be43bd873 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
 </div>
 </div>
 </div>
index 70be095d6a06d3d03c9726bcfdd94ee82d162b3d..38d7b5600e6d5b7e0df47db95561dc5911ddf627 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a><!-- 2012060100300 strait.de-->
 </div>
 </div>
 </div>
index 8fc80430d2c88800fdc047b295faeb41cb0610a0..b1af85dbef207fdde8734eede55ec5023206e1d6 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index 125005dd1911fd22d4adac5a41f76c3b6166c314..7e5264e20d6d02fcdd004f6bae4c18b72ea512a2 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
 </div>
 </div>
 </div>
 <h1>Download ImageMagick</h1>
 <div class="doc-section">
 <p>ImageMagick source and binary distributions are available from a variety of FTP and Web mirrors around the world listed below.  ImageMagick stable and development source releases are also available from <a href="../www/subversion.html">Subversion</a>.  Before you download, you may want to review recent <a href="../www/changelog.html">changes</a> to the ImageMagick distribution.</p>
-<p>The latest release of ImageMagick is version 6.6.9-7.</p>
+<p>The latest release of ImageMagick is version 6.6.9-8.</p>
 <dl>
   <dt class="doc">Australia</dt>
     <dd><a href="ftp://mirror.aarnet.edu.au/pub/imagemagick/">ftp://mirror.aarnet.edu.au/pub/imagemagick/</a></dd>
index 60142a09ad725c4bec5198fb836f51fdac71416a..bf03c420c4b0c585372dc201fa858c971dc3b30d 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 23bf53a08be805e6375b9db7728b0d6a18c36d65..0e437e670d17ccabf2ef9c88f876cc2d4ea8ac89 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index 9d1e1e6913486e68875d6ffa1b5c0b9052ead18f..59efd10e6885d41137e1269010df24dd2785831d 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index deb65d6ef0eaf57ce90128b523d575bc76c916db..626de2df564b0ee2138fcf156c42e426cfd339e4 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 97f29152048081d00f63750b21e35d474dbf4ea0..8dd7734262c1c43ea2bccb5775190086bd6d6bb2 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 8f27c100cf59a655bb471bbc6479600ab005442a..693c1c301ad088f7449812a16f52f5da9d0214c1 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 9edd8bc299574dd2cc41a6841648ee0a1c18edfa..6be1b479230a616472280eb9c47b5a13ece81844 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index a5ceb27f40fccab58d1f5479870deaf753d288c7..eef3e693a329c229d6c517f09ecc5c115b4e3a70 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
     Tainted: False  <br/>
     Filesize: 3.97266kb  <br/>
     Number pixels: 3.14453kb  <br/>
-    Version: ImageMagick 6.6.9-7 2011-04-06 Q16 http://www.imagemagick.org</span></p>
+    Version: ImageMagick 6.6.9-8 2011-04-06 Q16 http://www.imagemagick.org</span></p>
 <p>To get the print size in inches of an image at 72 DPI, use:</p>
 
 <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>identify -format "%[fx:w/72] by %[fx:h/72] inches" document.png</span><span class='crtout'>8.5 x 11 inches</span></p>
index b9fba52262747c81c79375a9c3e2050aef033515..2f75e28630a7cbf027a06dac8fa88f29a27ab2b0 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
+   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
 </div>
 </div>
 </div>
index efa45d021ed574b64c416ebae005fbe3bca0d112..3785ea1416d33f41d3c32a5be8ee8d17941243bb 100644 (file)
 
 <p>The ImageMagick development process ensures a stable API and ABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes <a href="http://www.valgrind.org">memory and thread</a> error detection to prevent security vulnerabilities.</p>
 
-<p>The current release is ImageMagick 6.6.9-7.</p>
+<p>The current release is ImageMagick 6.6.9-8.</p>
 
 </div>
 
index 906550b9a3f88773d4e2a8cf10bf5d476e5db742..f1246cd91b3649bf926e25b2916982b2e2cc6bc9 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 89e0f29c4fa19eed8da8fdf0989e4c561e5150f1..acd970fcd96810a471c334a08533aa161e3f1dce 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
index f2cda0e6c7507717a06460e67009d4147f348d63..f3304f92c6808602675bbcd04453a7c2b10e98fb 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index f89e013aa33bba0ca97b5e84ad9b728d98ddb132..231ca10a627c3c4703448c0b4827f8c1ec9b94e7 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
@@ -356,15 +356,21 @@ static MagickBooleanType SigmoidalContrast(ImageView *contrast_view,
   pixels=GetImageViewAuthenticPixels(contrast_view);
   for (x=0; x &lt; (ssize_t) (extent.width-extent.x); x++)
   {
-    pixels[x].red=RoundToQuantum(SigmoidalContrast(pixels[x].red));
-    pixels[x].green=RoundToQuantum(SigmoidalContrast(pixels[x].green));
-    pixels[x].blue=RoundToQuantum(SigmoidalContrast(pixels[x].blue));
-    pixels[x].opacity=RoundToQuantum(SigmoidalContrast(pixels[x].opacity));
+    SetRedPixelComponent(pixels,RoundToQuantum(SigmoidalContrast(
+      GetRedPixelComponent(pixels)));
+    SetGreenPixelComponent(pixels,RoundToQuantum(SigmoidalContrast(
+      GetGreenPixelComponent(pixels)));
+    SetBluePixelComponent(pixels,RoundToQuantum(SigmoidalContrast(
+      GetBluePixelComponent(pixels)));
+    SetOpacityPixelComponent(pixels,RoundToQuantum(SigmoidalContrast(
+      GetOpacityPixelComponent(pixels)));
+    pixels++;
   }
   indexes=GetImageViewAuthenticIndexes(contrast_view);
   if (indexes != (IndexPacket *) NULL)
     for (x=0; x &lt; (ssize_t) (extent.width-extent.x); x++)
-      indexes[x]=(IndexPacket) RoundToQuantum(SigmoidalContrast(indexes[x]));
+      SetIndexPixelComponent(indexes+x,RoundToQuantum(SigmoidalContrast(
+        GetIndexPixelComponent(indexes+x))));
   return(MagickTrue);
 }
 
index e7bc4bf30585cad86fae407d0d8e36fd77453f1d..4b615c49822955970b132c2b8200180b7cab77e1 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index 5a61f3ecbda9417ac5a565046d69bac8ae42f4b7..fe408a7128cbfd7a90b13a4d97cb5628e5842292 100644 (file)
@@ -236,7 +236,7 @@ int main(int argc,char **argv)
     severity; \
  \
   description=MagickGetException(wand,&amp;severity); \
-  (void) fprintf(stderr,"%s %s %u %s\n",GetMagickModule(),description); \
+  (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
   description=(char *) MagickRelinquishMemory(description); \
   exit(-1); \
 }
index 673b12d4f6e4b9eb0acc9d6ec49d469acf958799..b838077c0b13d6e24d93a853ba723107b8a4b652 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: alaTest.com" href="http://alatest.com">alaTest.com</a><!-- 20110801000300 -->
 </div>
 </div>
 </div>
index 53ce915eec0772dacff5690089d84f437d2340b1..89da683cb57c9c8fc3c4272f6c7ae2acfa4d3851 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
 </div>
 </div>
 </div>
index ec8aca80c27c14d941e2c757488bbd7eb2b99dd2..71ba6095a864b3b4c10b3066c27a26592df9991f 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
index f25d107f33e0b36bacfc7d538c6a43c1bf8a83a6..4afa1a2b998ef5d2049251ee211fbd82533d6424 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
 </div>
 </div>
 </div>
index 2358705d3d34ab154a1938ebe0cd9c579ec8d282..49c6c59f2433b9edd7aaadd69ee6cae6de943f15 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
 </div>
 </div>
 </div>
index b6fec45d903b4d3e0698492fd4fbcd35894c6292..b8810ee4be431f6f6be477cbd643b7c01e2b62e5 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Notebook Reparatur Berlin" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur Berlin</a><!-- 2011060100025 gabi.schulze-->
 </div>
 </div>
 </div>
index fea16cdf7bd6add3d8132a79ba889d479e7d4eea..f18f37fdae1eea4bdf9a164e1c71ff13ef8a10ff 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Fototapete" href=" http://www.allesdruck.de/Fototapete-Tapetendruck,category,8830.html">Fototapete</a><!-- 20110701000080 a-o.de -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index 63f29ae6053cdf77ef8043d1f64d623ba0ef10f1..34a70c935560891dc2ee5f2b5070c732898c26ad 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
index c86918fdb4257acd5bb2476e49e9a6e1f60b49cc..9e08a44f0da88e17c507c368fbea4d7f5c20865c 100644 (file)
@@ -165,7 +165,8 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,
         }
       for (x=0; x < (ssize_t) image->columns; x++)
       {
-        ConvertRGBToHSB(p->red,p->green,p->blue,&hue,&saturation,&brightness);
+        ConvertRGBToHSB(GetRedPixelComponent(p),GetGreenPixelComponent(p),
+          GetBluePixelComponent(p),&hue,&saturation,&brightness);
         brightness*=QuantumRange;
         brightness_sum_x+=brightness;
         brightness_sum_x2+=brightness*brightness;
index 11754c007f1cde246fdedd39c6b19f6d60cfe1b9..adda1ee925a2112c06f1ca95e2bc8a7b4982a52d 100644 (file)
@@ -219,9 +219,9 @@ static Image *ReadMGKImage(const ImageInfo *image_info,
         break;
       for (x=0; x < (ssize_t) image->columns; x++)
       {
-        q->red=ScaleCharToQuantum(*p++);
-        q->green=ScaleCharToQuantum(*p++);
-        q->blue=ScaleCharToQuantum(*p++);
+        SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
+        SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+        SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
         q++;
       }
       if (SyncAuthenticPixels(image,exception) == MagickFalse)
index ca947a3defdc52b308d69a26d1d684337ce5c350..30eec6d3b32bc506a2a8c38c71a50be61dfd36b5 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a><!-- 2011050100030 ooshirts.com-->
+   <a title="Sponsor: Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a><!-- 2011080100025 atlas.multimedia-->
 </div>
 </div>
 </div>
   <dd><a title="alaTest.com" href="http://alatest.com">alaTest.com </a></dd>
   <dd><a title="Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop </a></dd>
   <dd><a title="Best Web Hosting" href="http://webhostinggeeks.com">Best Web Hosting</a></dd>
-  <dd><a title="Custom T-Shirts" href="http://www.ooshirts.com">Custom T-Shirts</a></dd>
+  <dd><a title="Bildbearbeitung" href="http://www.bildschliff.de">Bildbearbeitung</a></dd>
   <dd><a title="Druckerei" href="http://www.allesdruck.de">Druckerei</a></dd>
   <dd><a title="Druckerei" href="http://print24.com/de/">Druckerei</a></dd>
   <dd><a title="Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a></dd>
index 2d7d54c4f3f331eb74c8af0644fbb94c5ff5818f..7b46e413751558f8b2b2cc79c0446c7e2b201610 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>
index a7fd82a55ca5e80d35679eca01da34ed7c5d1b6c..6cec4db97ca49ccae7b2d4e6e7882d3b5a608def 100644 (file)
   <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
 </div>
 <div  class="sponsor">
-   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
+   <a title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
 </div>
 </div>
 </div>