-background lightblue show:).
* Do not annotate directory paths in ListFiles().
* Reset the image matte for png:color-type=2.
+ * Add the ImageView API.
+ * Fix DJVU coder to read one page (e.g. 'image.djvu[2]').
2010-06-17 6.6.2-7 Cristy <quetzlzacatenango@image...>
* Support new label:pointsize property.
image=ReadOneDJVUImage(lc,i,image_info,exception);
if (image == (Image *) NULL)
break;
+ image->scene=i;
AppendImageToList(&images,CloneImageList(image,exception));
if (image_info->number_scenes != 0)
if (image->scene >= (image_info->scene+image_info->number_scenes-1))
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
*/
struct _ImageView
{
- ExceptionInfo
- *exception;
+ char
+ *description;
+
+ RectangleInfo
+ extent;
Image
*image;
CacheView
*view;
- RectangleInfo
- region;
-
size_t
number_threads;
+ ExceptionInfo
+ *exception;
+
MagickBooleanType
debug;
if (clone_view == (ImageView *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(clone_view,0,sizeof(*clone_view));
- clone_view->exception=AcquireExceptionInfo();
- InheritException(clone_view->exception,image_view->exception);
+ clone_view->description=ConstantString(image_view->description);
+ clone_view->extent=image_view->extent;
clone_view->view=CloneCacheView(image_view->view);
- clone_view->region=image_view->region;
clone_view->number_threads=image_view->number_threads;
+ clone_view->exception=AcquireExceptionInfo();
+ InheritException(clone_view->exception,image_view->exception);
clone_view->debug=image_view->debug;
clone_view->signature=MagickSignature;
return(clone_view);
{
assert(image_view != (ImageView *) NULL);
assert(image_view->signature == MagickSignature);
+ if (image_view->description != (char *) NULL)
+ image_view->description=DestroyString(image_view->description);
image_view->view=DestroyCacheView(image_view->view);
image_view->exception=DestroyExceptionInfo(image_view->exception);
image_view->signature=(~MagickSignature);
%
% DuplexTransferImageViewIterator() iterates over three image 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
+% source and duplex pixel extent 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 image view is confined to the image
% canvas-- that is no negative offsets or widths or heights that exceed the
ImageView *source,ImageView *duplex,ImageView *destination,
DuplexTransferImageViewMethod transfer,void *context)
{
-#define DuplexTransferImageViewTag "ImageView/DuplexTransfer"
-
ExceptionInfo
*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++)
+ for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
{
MagickBooleanType
sync;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
- source->region.width,1,source->exception);
+ pixels=GetCacheViewVirtualPixels(source->view,source->extent.x,y,
+ source->extent.width,1,source->exception);
if (pixels == (const PixelPacket *) NULL)
{
status=MagickFalse;
continue;
}
indexes=GetCacheViewVirtualIndexQueue(source->view);
- duplex_pixels=GetCacheViewVirtualPixels(duplex->view,duplex->region.x,y,
- duplex->region.width,1,duplex->exception);
+ duplex_pixels=GetCacheViewVirtualPixels(duplex->view,duplex->extent.x,y,
+ duplex->extent.width,1,duplex->exception);
if (duplex_pixels == (const PixelPacket *) NULL)
{
status=MagickFalse;
}
duplex_indexes=GetCacheViewVirtualIndexQueue(duplex->view);
destination_pixels=GetCacheViewAuthenticPixels(destination->view,
- destination->region.x,y,destination->region.width,1,exception);
+ destination->extent.x,y,destination->extent.width,1,exception);
if (destination_pixels == (PixelPacket *) NULL)
{
status=MagickFalse;
continue;
}
destination_indexes=GetCacheViewAuthenticIndexQueue(destination->view);
- if (transfer(source,duplex,destination,context) == MagickFalse)
+ if (transfer(source,duplex,destination,y,id,context) == MagickFalse)
status=MagickFalse;
sync=SyncCacheViewAuthenticPixels(destination->view,exception);
if (sync == MagickFalse)
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_DuplexTransferImageViewIterator)
#endif
- proceed=SetImageProgress(source_image,DuplexTransferImageViewTag,
- progress++,source->region.height);
+ proceed=SetImageProgress(source_image,source->description,progress++,
+ source->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
% %
% %
% %
-% G e t I m a g e V i e w H e i g h t %
+% G e t I m a g e V i e w E x t e n t %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% GetImageViewHeight() returns the image view height.
+% GetImageViewExtent() returns the image view extent.
%
-% The format of the GetImageViewHeight method is:
+% The format of the GetImageViewExtent method is:
%
-% size_t GetImageViewHeight(const ImageView *image_view)
+% RectangleInfo GetImageViewExtent(const ImageView *image_view)
%
% A description of each parameter follows:
%
% o image_view: the image view.
%
*/
-MagickExport size_t GetImageViewHeight(const ImageView *image_view)
+MagickExport RectangleInfo GetImageViewExtent(const ImageView *image_view)
{
assert(image_view != (ImageView *) NULL);
assert(image_view->signature == MagickSignature);
- return(image_view->region.height);
+ return(image_view->extent);
}
\f
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% GetImageViewIterator() iterates over the image view in parallel and calls
-% your get method for each scanline of the view. The pixel region is
+% your get method for each scanline of the view. The pixel extent 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.
MagickExport MagickBooleanType GetImageViewIterator(ImageView *source,
GetImageViewMethod get,void *context)
{
-#define GetImageViewTag "ImageView/Get"
-
Image
*source_image;
#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++)
+ for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
{
register const IndexPacket
*indexes;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
- source->region.width,1,source->exception);
+ pixels=GetCacheViewVirtualPixels(source->view,source->extent.x,y,
+ source->extent.width,1,source->exception);
if (pixels == (const PixelPacket *) NULL)
{
status=MagickFalse;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_GetImageViewIterator)
#endif
- proceed=SetImageProgress(source_image,GetImageViewTag,progress++,
- source->region.height);
+ proceed=SetImageProgress(source_image,source->description,progress++,
+ source->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
% %
% %
% %
-% G e t I m a g e V i e w W i d t h %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetImageViewWidth() returns the image view width.
-%
-% The format of the GetImageViewWidth method is:
-%
-% size_t GetImageViewWidth(const ImageView *image_view)
-%
-% A description of each parameter follows:
-%
-% o image_view: the image view.
-%
-*/
-MagickExport size_t GetImageViewWidth(const ImageView *image_view)
-{
- assert(image_view != (ImageView *) NULL);
- assert(image_view->signature == MagickSignature);
- return(image_view->region.width);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
-% G e t I m a g e V i e w X %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetImageViewX() returns the image view x offset.
-%
-% The format of the GetImageViewX method is:
-%
-% ssize_t GetImageViewX(const ImageView *image_view)
-%
-% A description of each parameter follows:
-%
-% o image_view: the image view.
-%
-*/
-MagickExport ssize_t GetImageViewX(const ImageView *image_view)
-{
- assert(image_view != (ImageView *) NULL);
- assert(image_view->signature == MagickSignature);
- return(image_view->region.x);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
-% G e t I m a g e V i e w Y %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetImageViewY() returns the image view y offset.
-%
-% The format of the GetImageViewY method is:
-%
-% ssize_t GetImageViewY(const ImageView *image_view)
-%
-% A description of each parameter follows:
-%
-% o image_view: the image view.
-%
-*/
-MagickExport ssize_t GetImageViewY(const ImageView *image_view)
-{
- assert(image_view != (ImageView *) NULL);
- assert(image_view->signature == MagickSignature);
- return(image_view->region.y);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
% I s I m a g e V i e w %
% %
% %
if (image_view == (ImageView *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(image_view,0,sizeof(*image_view));
- image_view->exception=AcquireExceptionInfo();
+ image_view->description=ConstantString("ImageView");
image_view->image=image;
image_view->view=AcquireCacheView(image_view->image);
- image_view->region.width=image->columns;
- image_view->region.height=image->rows;
+ image_view->extent.width=image->columns;
+ image_view->extent.height=image->rows;
+ image_view->extent.x=0;
+ image_view->extent.y=0;
image_view->number_threads=GetOpenMPMaximumThreads();
+ image_view->exception=AcquireExceptionInfo();
image_view->debug=IsEventLogging();
image_view->signature=MagickSignature;
return(image_view);
%
% o wand: the magick wand.
%
-% o x,y,columns,rows: These values define the perimeter of a region of
+% o x,y,columns,rows: These values define the perimeter of a extent of
% pixel_wands view.
%
*/
if (image_view == (ImageView *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(image_view,0,sizeof(*image_view));
- image_view->exception=AcquireExceptionInfo();
+ image_view->description=ConstantString("ImageView");
image_view->view=AcquireCacheView(image_view->image);
image_view->image=image;
- image_view->region.width=width;
- image_view->region.height=height;
- image_view->region.x=x;
- image_view->region.y=y;
+ image_view->extent.width=width;
+ image_view->extent.height=height;
+ image_view->extent.x=x;
+ image_view->extent.y=y;
image_view->number_threads=GetOpenMPMaximumThreads();
+ image_view->exception=AcquireExceptionInfo();
image_view->debug=IsEventLogging();
image_view->signature=MagickSignature;
return(image_view);
% %
% %
% %
+% S e t I m a g e V i e w D e s c r i p t i o n %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SetImageViewDescription() associates a description with an image view.
+%
+% The format of the SetImageViewDescription method is:
+%
+% void SetImageViewDescription(ImageView *image_view,
+% const char *description)
+%
+% A description of each parameter follows:
+%
+% o image_view: the image view.
+%
+% o description: the image view description.
+%
+*/
+MagickExport void SetImageViewDescription(ImageView *image_view,
+ const char *description)
+{
+ assert(image_view != (ImageView *) NULL);
+ assert(image_view->signature == MagickSignature);
+ image_view->description=ConstantString(description);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% S e t I m a g e V i e w I t e r a t o r %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SetImageViewIterator() iterates over the image view in parallel and calls
-% your set method for each scanline of the view. The pixel region is
+% your set method for each scanline of the view. The pixel extent 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
MagickExport MagickBooleanType SetImageViewIterator(ImageView *destination,
SetImageViewMethod set,void *context)
{
-#define SetImageViewTag "ImageView/Set"
-
ExceptionInfo
*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++)
+ for (y=destination->extent.y; y < (ssize_t) destination->extent.height; y++)
{
MagickBooleanType
sync;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewAuthenticPixels(destination->view,destination->region.x,
- y,destination->region.width,1,exception);
+ pixels=GetCacheViewAuthenticPixels(destination->view,destination->extent.x,
+ y,destination->extent.width,1,exception);
if (pixels == (PixelPacket *) NULL)
{
InheritException(destination->exception,GetCacheViewException(
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_SetImageViewIterator)
#endif
- proceed=SetImageProgress(destination_image,SetImageViewTag,progress++,
- destination->region.height);
+ proceed=SetImageProgress(destination_image,destination->description,
+ progress++,destination->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
%
% TransferImageViewIterator() iterates over two image 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
+% extent 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 image view is confined to the image canvas-- that
% is no negative offsets or widths or heights that exceed the image dimension
MagickExport MagickBooleanType TransferImageViewIterator(ImageView *source,
ImageView *destination,TransferImageViewMethod transfer,void *context)
{
-#define TransferImageViewTag "ImageView/Transfer"
-
ExceptionInfo
*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++)
+ for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
{
MagickBooleanType
sync;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
- source->region.width,1,source->exception);
+ pixels=GetCacheViewVirtualPixels(source->view,source->extent.x,y,
+ source->extent.width,1,source->exception);
if (pixels == (const PixelPacket *) NULL)
{
status=MagickFalse;
}
indexes=GetCacheViewVirtualIndexQueue(source->view);
destination_pixels=GetCacheViewAuthenticPixels(destination->view,
- destination->region.x,y,destination->region.width,1,exception);
+ destination->extent.x,y,destination->extent.width,1,exception);
if (destination_pixels == (PixelPacket *) NULL)
{
status=MagickFalse;
continue;
}
destination_indexes=GetCacheViewAuthenticIndexQueue(destination->view);
- if (transfer(source,destination,context) == MagickFalse)
+ if (transfer(source,destination,y,id,context) == MagickFalse)
status=MagickFalse;
sync=SyncCacheViewAuthenticPixels(destination->view,exception);
if (sync == MagickFalse)
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_TransferImageViewIterator)
#endif
- proceed=SetImageProgress(source_image,TransferImageViewTag,progress++,
- source->region.height);
+ proceed=SetImageProgress(source_image,source->description,progress++,
+ source->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% UpdateImageViewIterator() iterates over the image view in parallel and calls
-% your update method for each scanline of the view. The pixel region is
+% your update method for each scanline of the view. The pixel extent 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.
MagickExport MagickBooleanType UpdateImageViewIterator(ImageView *source,
UpdateImageViewMethod update,void *context)
{
-#define UpdateImageViewTag "ImageView/Update"
-
ExceptionInfo
*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++)
+ for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
{
register IndexPacket
*restrict indexes;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewAuthenticPixels(source->view,source->region.x,y,
- source->region.width,1,exception);
+ pixels=GetCacheViewAuthenticPixels(source->view,source->extent.x,y,
+ source->extent.width,1,exception);
if (pixels == (PixelPacket *) NULL)
{
InheritException(source->exception,GetCacheViewException(source->view));
continue;
}
indexes=GetCacheViewAuthenticIndexQueue(source->view);
- if (update(source,context) == MagickFalse)
+ if (update(source,y,id,context) == MagickFalse)
status=MagickFalse;
if (SyncCacheViewAuthenticPixels(source->view,exception) == MagickFalse)
{
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickCore_UpdateImageViewIterator)
#endif
- proceed=SetImageProgress(source_image,UpdateImageViewTag,progress++,
- source->region.height);
+ proceed=SetImageProgress(source_image,source->description,progress++,
+ source->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
typedef MagickBooleanType
(*DuplexTransferImageViewMethod)(const ImageView *,const ImageView *,
- ImageView *,void *),
+ ImageView *,const ssize_t,const int,void *),
(*GetImageViewMethod)(const ImageView *,void *),
(*SetImageViewMethod)(ImageView *,void *),
- (*TransferImageViewMethod)(const ImageView *,ImageView *,void *),
- (*UpdateImageViewMethod)(ImageView *,void *);
+ (*TransferImageViewMethod)(const ImageView *,ImageView *,const ssize_t,
+ const int,void *),
+ (*UpdateImageViewMethod)(ImageView *,const ssize_t,const int,void *);
extern MagickExport char
*GetImageViewException(const ImageView *,ExceptionType *);
extern MagickExport PixelPacket
*GetImageViewAuthenticPixels(const ImageView *);
-extern MagickExport size_t
- GetImageViewHeight(const ImageView *),
- GetImageViewWidth(const ImageView *);
+extern MagickExport RectangleInfo
+ GetImageViewExtent(const ImageView *);
-extern MagickExport ssize_t
- GetImageViewX(const ImageView *),
- GetImageViewY(const ImageView *);
+extern MagickExport void
+ SetImageViewDescription(ImageView *,const char *);
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
}
-static inline ssize_t GetOpenMPThreadId(void)
+static inline int GetOpenMPThreadId(void)
{
#if defined(MAGICKCORE_OPENMP_SUPPORT) && (_OPENMP >= 200203)
return(omp_get_thread_num());
id;
char
- name[MaxTextExtent];
+ name[MaxTextExtent],
+ *description;
- ExceptionInfo
- *exception;
+ RectangleInfo
+ extent;
MagickWand
*wand;
CacheView
*view;
- RectangleInfo
- region;
-
size_t
number_threads;
PixelWand
***pixel_wands;
+ ExceptionInfo
+ *exception;
+
MagickBooleanType
debug;
clone_view->id=AcquireWandId();
(void) FormatMagickString(clone_view->name,MaxTextExtent,"%s-%.20g",
WandViewId,(double) clone_view->id);
- clone_view->exception=AcquireExceptionInfo();
- InheritException(clone_view->exception,wand_view->exception);
+ clone_view->description=ConstantString(wand_view->description);
clone_view->view=CloneCacheView(wand_view->view);
- clone_view->region=wand_view->region;
+ clone_view->extent=wand_view->extent;
clone_view->number_threads=wand_view->number_threads;
+ clone_view->exception=AcquireExceptionInfo();
+ InheritException(clone_view->exception,wand_view->exception);
for (i=0; i < (ssize_t) wand_view->number_threads; i++)
clone_view->pixel_wands[i]=ClonePixelWands((const PixelWand **)
- wand_view->pixel_wands[i],wand_view->region.width);
+ wand_view->pixel_wands[i],wand_view->extent.width);
clone_view->debug=wand_view->debug;
if (clone_view->debug != MagickFalse)
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",clone_view->name);
assert(wand_view != (WandView *) NULL);
assert(wand_view->signature == WandSignature);
wand_view->pixel_wands=DestroyPixelsThreadSet(wand_view->pixel_wands,
- wand_view->region.width,wand_view->number_threads);
+ wand_view->extent.width,wand_view->number_threads);
wand_view->view=DestroyCacheView(wand_view->view);
wand_view->exception=DestroyExceptionInfo(wand_view->exception);
wand_view->signature=(~WandSignature);
%
% DuplexTransferWandViewIterator() iterates over three wand 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
+% source and duplex pixel extent 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 wand view is confined to the image
% canvas-- that is no negative offsets or widths or heights that exceed the
WandView *duplex,WandView *destination,DuplexTransferWandViewMethod transfer,
void *context)
{
-#define DuplexTransferWandViewTag "WandView/DuplexTransfer"
-
ExceptionInfo
*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++)
+ for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
{
MagickBooleanType
sync;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
- source->region.width,1,source->exception);
+ pixels=GetCacheViewVirtualPixels(source->view,source->extent.x,y,
+ source->extent.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++)
+ for (x=0; x < (ssize_t) source->extent.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++)
+ for (x=0; x < (ssize_t) source->extent.width; x++)
PixelSetBlackQuantum(source->pixel_wands[id][x],indexes[x]);
if (source_image->storage_class == PseudoClass)
- for (x=0; x < (ssize_t) source->region.width; x++)
+ for (x=0; x < (ssize_t) source->extent.width; x++)
PixelSetIndex(source->pixel_wands[id][x],indexes[x]);
- duplex_pixels=GetCacheViewVirtualPixels(duplex->view,duplex->region.x,y,
- duplex->region.width,1,duplex->exception);
+ duplex_pixels=GetCacheViewVirtualPixels(duplex->view,duplex->extent.x,y,
+ duplex->extent.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++)
+ for (x=0; x < (ssize_t) duplex->extent.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++)
+ for (x=0; x < (ssize_t) duplex->extent.width; x++)
PixelSetBlackQuantum(duplex->pixel_wands[id][x],duplex_indexes[x]);
if (duplex_image->storage_class == PseudoClass)
- for (x=0; x < (ssize_t) duplex->region.width; x++)
+ for (x=0; x < (ssize_t) duplex->extent.width; x++)
PixelSetIndex(duplex->pixel_wands[id][x],duplex_indexes[x]);
destination_pixels=GetCacheViewAuthenticPixels(destination->view,
- destination->region.x,y,destination->region.width,1,exception);
+ destination->extent.x,y,destination->extent.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++)
+ for (x=0; x < (ssize_t) destination->extent.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++)
+ for (x=0; x < (ssize_t) destination->extent.width; x++)
PixelSetBlackQuantum(destination->pixel_wands[id][x],
destination_indexes[x]);
if (destination_image->storage_class == PseudoClass)
- for (x=0; x < (ssize_t) destination->region.width; x++)
+ for (x=0; x < (ssize_t) destination->extent.width; x++)
PixelSetIndex(destination->pixel_wands[id][x],destination_indexes[x]);
- if (transfer(source,duplex,destination,context) == MagickFalse)
+ if (transfer(source,duplex,destination,y,id,context) == MagickFalse)
status=MagickFalse;
- for (x=0; x < (ssize_t) destination->region.width; x++)
+ for (x=0; x < (ssize_t) destination->extent.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++)
+ for (x=0; x < (ssize_t) destination->extent.width; x++)
destination_indexes[x]=PixelGetBlackQuantum(
destination->pixel_wands[id][x]);
sync=SyncCacheViewAuthenticPixels(destination->view,exception);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickWand_DuplexTransferWandViewIterator)
#endif
- proceed=SetImageProgress(source_image,DuplexTransferWandViewTag,
- progress++,source->region.height);
+ proceed=SetImageProgress(source_image,source->description,progress++,
+ source->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
% %
% %
% %
-% G e t W a n d V i e w H e i g h t %
+% G e t W a n d V i e w E x t e n t %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% GetWandViewHeight() returns the wand view height.
+% GetWandViewExtent() returns the wand view extent.
%
-% The format of the GetWandViewHeight method is:
+% The format of the GetWandViewExtent method is:
%
-% size_t GetWandViewHeight(const WandView *wand_view)
+% RectangleInfo GetWandViewExtent(const WandView *wand_view)
%
% A description of each parameter follows:
%
% o wand_view: the wand view.
%
*/
-WandExport size_t GetWandViewHeight(const WandView *wand_view)
+WandExport RectangleInfo GetWandViewExtent(const WandView *wand_view)
{
assert(wand_view != (WandView *) NULL);
assert(wand_view->signature == WandSignature);
- return(wand_view->region.height);
+ return(wand_view->extent);
}
\f
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% GetWandViewIterator() iterates over the wand view in parallel and calls
-% your get method for each scanline of the view. The pixel region is
+% your get method for each scanline of the view. The pixel extent 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.
WandExport MagickBooleanType GetWandViewIterator(WandView *source,
GetWandViewMethod get,void *context)
{
-#define GetWandViewTag "WandView/Get"
-
Image
*source_image;
#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++)
+ for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
{
register const IndexPacket
*indexes;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
- source->region.width,1,source->exception);
+ pixels=GetCacheViewVirtualPixels(source->view,source->extent.x,y,
+ source->extent.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++)
+ for (x=0; x < (ssize_t) source->extent.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++)
+ for (x=0; x < (ssize_t) source->extent.width; x++)
PixelSetBlackQuantum(source->pixel_wands[id][x],indexes[x]);
if (source_image->storage_class == PseudoClass)
- for (x=0; x < (ssize_t) source->region.width; x++)
+ for (x=0; x < (ssize_t) source->extent.width; x++)
PixelSetIndex(source->pixel_wands[id][x],indexes[x]);
if (get(source,context) == MagickFalse)
status=MagickFalse;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickWand_GetWandViewIterator)
#endif
- proceed=SetImageProgress(source_image,GetWandViewTag,progress++,
- source->region.height);
+ proceed=SetImageProgress(source_image,source->description,progress++,
+ source->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
% %
% %
% %
-% G e t W a n d V i e w W i d t h %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetWandViewWidth() returns the wand view width.
-%
-% The format of the GetWandViewWidth method is:
-%
-% size_t GetWandViewWidth(const WandView *wand_view)
-%
-% A description of each parameter follows:
-%
-% o wand_view: the wand view.
-%
-*/
-WandExport size_t GetWandViewWidth(const WandView *wand_view)
-{
- assert(wand_view != (WandView *) NULL);
- assert(wand_view->signature == WandSignature);
- return(wand_view->region.width);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
-% G e t W a n d V i e w X %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetWandViewX() returns the wand view x offset.
-%
-% The format of the GetWandViewX method is:
-%
-% ssize_t GetWandViewX(const WandView *wand_view)
-%
-% A description of each parameter follows:
-%
-% o wand_view: the wand view.
-%
-*/
-WandExport ssize_t GetWandViewX(const WandView *wand_view)
-{
- assert(wand_view != (WandView *) NULL);
- assert(wand_view->signature == WandSignature);
- return(wand_view->region.x);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
-% G e t W a n d V i e w Y %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetWandViewY() returns the wand view y offset.
-%
-% The format of the GetWandViewY method is:
-%
-% ssize_t GetWandViewY(const WandView *wand_view)
-%
-% A description of each parameter follows:
-%
-% o wand_view: the wand view.
-%
-*/
-WandExport ssize_t GetWandViewY(const WandView *wand_view)
-{
- assert(wand_view != (WandView *) NULL);
- assert(wand_view->signature == WandSignature);
- return(wand_view->region.y);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
% I s W a n d V i e w %
% %
% %
*wand_view;
assert(wand != (MagickWand *) NULL);
- assert(wand->signature == MagickSignature);
+ assert(wand->signature == WandSignature);
wand_view=(WandView *) AcquireAlignedMemory(1,sizeof(*wand_view));
if (wand_view == (WandView *) NULL)
ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
wand_view->id=AcquireWandId();
(void) FormatMagickString(wand_view->name,MaxTextExtent,"%s-%.20g",
WandViewId,(double) wand_view->id);
- wand_view->exception=AcquireExceptionInfo();
+ wand_view->description=ConstantString("WandView");
wand_view->wand=wand;
wand_view->view=AcquireCacheView(wand_view->wand->images);
- wand_view->region.width=wand->images->columns;
- wand_view->region.height=wand->images->rows;
+ wand_view->extent.width=wand->images->columns;
+ wand_view->extent.height=wand->images->rows;
wand_view->number_threads=GetOpenMPMaximumThreads();
- wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->region.width,
+ wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->extent.width,
wand_view->number_threads);
+ wand_view->exception=AcquireExceptionInfo();
if (wand_view->pixel_wands == (PixelWand ***) NULL)
ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
GetExceptionMessage(errno));
% %
% %
% %
-% N e w W a n d V i e w R e g i o n %
+% N e w W a n d V i e w E x t e n t %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% NewWandViewRegion() returns a wand view required for all other methods
+% NewWandViewExtent() returns a wand view required for all other methods
% in the Wand View API.
%
-% The format of the NewWandViewRegion method is:
+% The format of the NewWandViewExtent method is:
%
-% WandView *NewWandViewRegion(MagickWand *wand,const ssize_t x,
+% WandView *NewWandViewExtent(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 wand: the magick wand.
%
-% o x,y,columns,rows: These values define the perimeter of a region of
+% o x,y,columns,rows: These values define the perimeter of a extent of
% pixel_wands view.
%
*/
-WandExport WandView *NewWandViewRegion(MagickWand *wand,const ssize_t x,
+WandExport WandView *NewWandViewExtent(MagickWand *wand,const ssize_t x,
const ssize_t y,const size_t width,const size_t height)
{
WandView
*wand_view;
assert(wand != (MagickWand *) NULL);
- assert(wand->signature == MagickSignature);
+ assert(wand->signature == WandSignature);
wand_view=(WandView *) AcquireAlignedMemory(1,sizeof(*wand_view));
if (wand_view == (WandView *) NULL)
ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
wand_view->id=AcquireWandId();
(void) FormatMagickString(wand_view->name,MaxTextExtent,"%s-%.20g",
WandViewId,(double) wand_view->id);
- wand_view->exception=AcquireExceptionInfo();
+ wand_view->description=ConstantString("WandView");
wand_view->view=AcquireCacheView(wand_view->wand->images);
wand_view->wand=wand;
- wand_view->region.width=width;
- wand_view->region.height=height;
- wand_view->region.x=x;
- wand_view->region.y=y;
+ wand_view->extent.width=width;
+ wand_view->extent.height=height;
+ wand_view->extent.x=x;
+ wand_view->extent.y=y;
wand_view->number_threads=GetOpenMPMaximumThreads();
- wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->region.width,
+ wand_view->exception=AcquireExceptionInfo();
+ wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->extent.width,
wand_view->number_threads);
if (wand_view->pixel_wands == (PixelWand ***) NULL)
ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
% %
% %
% %
+% S e t W a n d V i e w D e s c r i p t i o n %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SetWandViewDescription() associates a description with an image view.
+%
+% The format of the SetWandViewDescription method is:
+%
+% void SetWandViewDescription(WandView *image_view,const char *description)
+%
+% A description of each parameter follows:
+%
+% o wand_view: the wand view.
+%
+% o description: the wand view description.
+%
+*/
+MagickExport void SetWandViewDescription(WandView *wand_view,
+ const char *description)
+{
+ assert(wand_view != (WandView *) NULL);
+ assert(wand_view->signature == WandSignature);
+ wand_view->description=ConstantString(description);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% S e t W a n d V i e w I t e r a t o r %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SetWandViewIterator() iterates over the wand view in parallel and calls
-% your set method for each scanline of the view. The pixel region is
+% your set method for each scanline of the view. The pixel extent 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
WandExport MagickBooleanType SetWandViewIterator(WandView *destination,
SetWandViewMethod set,void *context)
{
-#define SetWandViewTag "WandView/Set"
-
ExceptionInfo
*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++)
+ for (y=destination->extent.y; y < (ssize_t) destination->extent.height; y++)
{
MagickBooleanType
sync;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewAuthenticPixels(destination->view,destination->region.x,
- y,destination->region.width,1,exception);
+ pixels=GetCacheViewAuthenticPixels(destination->view,destination->extent.x,
+ y,destination->extent.width,1,exception);
if (pixels == (PixelPacket *) NULL)
{
InheritException(destination->exception,GetCacheViewException(
indexes=GetCacheViewAuthenticIndexQueue(destination->view);
if (set(destination,context) == MagickFalse)
status=MagickFalse;
- for (x=0; x < (ssize_t) destination->region.width; x++)
+ for (x=0; x < (ssize_t) destination->extent.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++)
+ for (x=0; x < (ssize_t) destination->extent.width; x++)
indexes[x]=PixelGetBlackQuantum(destination->pixel_wands[id][x]);
sync=SyncCacheViewAuthenticPixels(destination->view,exception);
if (sync == MagickFalse)
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickWand_SetWandViewIterator)
#endif
- proceed=SetImageProgress(destination_image,SetWandViewTag,progress++,
- destination->region.height);
+ proceed=SetImageProgress(destination_image,destination->description,
+ progress++,destination->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
%
% TransferWandViewIterator() iterates over two wand 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
+% extent 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 wand view is confined to the image canvas-- that
% is no negative offsets or widths or heights that exceed the image dimension
WandExport MagickBooleanType TransferWandViewIterator(WandView *source,
WandView *destination,TransferWandViewMethod transfer,void *context)
{
-#define TransferWandViewTag "WandView/Transfer"
-
ExceptionInfo
*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++)
+ for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
{
MagickBooleanType
sync;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
- source->region.width,1,source->exception);
+ pixels=GetCacheViewVirtualPixels(source->view,source->extent.x,y,
+ source->extent.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++)
+ for (x=0; x < (ssize_t) source->extent.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++)
+ for (x=0; x < (ssize_t) source->extent.width; x++)
PixelSetBlackQuantum(source->pixel_wands[id][x],indexes[x]);
if (source_image->storage_class == PseudoClass)
- for (x=0; x < (ssize_t) source->region.width; x++)
+ for (x=0; x < (ssize_t) source->extent.width; x++)
PixelSetIndex(source->pixel_wands[id][x],indexes[x]);
destination_pixels=GetCacheViewAuthenticPixels(destination->view,
- destination->region.x,y,destination->region.width,1,exception);
+ destination->extent.x,y,destination->extent.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++)
+ for (x=0; x < (ssize_t) destination->extent.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++)
+ for (x=0; x < (ssize_t) destination->extent.width; x++)
PixelSetBlackQuantum(destination->pixel_wands[id][x],indexes[x]);
if (destination_image->storage_class == PseudoClass)
- for (x=0; x < (ssize_t) destination->region.width; x++)
+ for (x=0; x < (ssize_t) destination->extent.width; x++)
PixelSetIndex(destination->pixel_wands[id][x],indexes[x]);
- if (transfer(source,destination,context) == MagickFalse)
+ if (transfer(source,destination,y,id,context) == MagickFalse)
status=MagickFalse;
- for (x=0; x < (ssize_t) destination->region.width; x++)
+ for (x=0; x < (ssize_t) destination->extent.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++)
+ for (x=0; x < (ssize_t) destination->extent.width; x++)
destination_indexes[x]=PixelGetBlackQuantum(
destination->pixel_wands[id][x]);
sync=SyncCacheViewAuthenticPixels(destination->view,exception);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickWand_TransferWandViewIterator)
#endif
- proceed=SetImageProgress(source_image,TransferWandViewTag,progress++,
- source->region.height);
+ proceed=SetImageProgress(source_image,source->description,progress++,
+ source->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% UpdateWandViewIterator() iterates over the wand view in parallel and calls
-% your update method for each scanline of the view. The pixel region is
+% your update method for each scanline of the view. The pixel extent 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.
WandExport MagickBooleanType UpdateWandViewIterator(WandView *source,
UpdateWandViewMethod update,void *context)
{
-#define UpdateWandViewTag "WandView/Update"
-
ExceptionInfo
*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++)
+ for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
{
register IndexPacket
*restrict indexes;
if (status == MagickFalse)
continue;
id=GetOpenMPThreadId();
- pixels=GetCacheViewAuthenticPixels(source->view,source->region.x,y,
- source->region.width,1,exception);
+ pixels=GetCacheViewAuthenticPixels(source->view,source->extent.x,y,
+ source->extent.width,1,exception);
if (pixels == (PixelPacket *) NULL)
{
InheritException(source->exception,GetCacheViewException(
continue;
}
indexes=GetCacheViewAuthenticIndexQueue(source->view);
- for (x=0; x < (ssize_t) source->region.width; x++)
+ for (x=0; x < (ssize_t) source->extent.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++)
+ for (x=0; x < (ssize_t) source->extent.width; x++)
PixelSetBlackQuantum(source->pixel_wands[id][x],indexes[x]);
- if (update(source,context) == MagickFalse)
+ if (update(source,y,id,context) == MagickFalse)
status=MagickFalse;
- for (x=0; x < (ssize_t) source->region.width; x++)
+ for (x=0; x < (ssize_t) source->extent.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++)
+ for (x=0; x < (ssize_t) source->extent.width; x++)
indexes[x]=PixelGetBlackQuantum(source->pixel_wands[id][x]);
if (SyncCacheViewAuthenticPixels(source->view,exception) == MagickFalse)
{
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp critical (MagickWand_UpdateWandViewIterator)
#endif
- proceed=SetImageProgress(source_image,UpdateWandViewTag,progress++,
- source->region.height);
+ proceed=SetImageProgress(source_image,source->description,progress++,
+ source->extent.height);
if (proceed == MagickFalse)
status=MagickFalse;
}
typedef MagickBooleanType
(*DuplexTransferWandViewMethod)(const WandView *,const WandView *,WandView *,
- void *),
+ const ssize_t,const int,void *),
(*GetWandViewMethod)(const WandView *,void *),
(*SetWandViewMethod)(WandView *,void *),
- (*TransferWandViewMethod)(const WandView *,WandView *,void *),
- (*UpdateWandViewMethod)(WandView *,void *);
+ (*TransferWandViewMethod)(const WandView *,WandView *,const ssize_t,
+ const int,void *),
+ (*UpdateWandViewMethod)(WandView *,const ssize_t,const int,void *);
extern WandExport char
*GetWandViewException(const WandView *,ExceptionType *);
extern WandExport MagickWand
*GetWandViewWand(const WandView *);
+extern WandExport PixelWand
+ **GetWandViewPixels(const WandView *);
+
+extern WandExport RectangleInfo
+ GetWandViewExtent(const WandView *);
+
+extern WandExport void
+ SetWandViewDescription(WandView *,const char *);
+
extern WandExport WandView
*CloneWandView(const WandView *),
*DestroyWandView(WandView *),
*NewWandView(MagickWand *),
- *NewWandViewRegion(MagickWand *,const ssize_t,const ssize_t,const size_t,
+ *NewWandViewExtent(MagickWand *,const ssize_t,const ssize_t,const size_t,
const size_t);
-extern WandExport PixelWand
- **GetWandViewPixels(const WandView *);
-
-extern WandExport size_t
- GetWandViewHeight(const WandView *),
- GetWandViewWidth(const WandView *);
-
-extern WandExport ssize_t
- GetWandViewX(const WandView *),
- GetWandViewY(const WandView *);
-
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<h2><a name="ada"></a>Ada</h2>
</div>
-<p><a href="https://gna.org/projects/g2f/" target="47810688">G2F</a> implements an Ada 95 binding to a subset of the low-level MagickCore library.</p>
+<p><a href="https://gna.org/projects/g2f/" target="2061929515">G2F</a> implements an Ada 95 binding to a subset of the low-level MagickCore library.</p>
<div style="margin: auto;">
<h2><a name="c"></a>C</h2>
<h2><a name="ch"></a>Ch</h2>
</div>
-<p><a href="http://www.imagemagick.org/ChMagick" target="2090328326">ChMagick</a> is a <a href="http://www.softintegration.com/" target="1672899526">Ch</a> binding to the MagickCore and MagickWand API. Ch is an embeddable C/C++ interpreter for cross-platform scripting.</p>
+<p><a href="http://www.imagemagick.org/ChMagick" target="1864245311">ChMagick</a> is a <a href="http://www.softintegration.com/" target="1600165702">Ch</a> binding to the MagickCore and MagickWand API. Ch is an embeddable C/C++ interpreter for cross-platform scripting.</p>
<div style="margin: auto;">
<h2><a name="com+"></a>COM+</h2>
<h2><a name="c++"></a>C++</h2>
</div>
-<p><a href="http://www.imagemagick.org/Magick++" target="1644265884">Magick++</a> provides an object-oriented C++ interface to ImageMagick. See <a href="http://www.imagemagick.org/Magick++/tutorial/Magick++_tutorial.pdf" target="796317481">A Gentle Introduction to Magick++</a> for an introductory tutorial to Magick++. We include the <a href="http://www.imagemagick.org/Magick++/tutorial/Magick++_tutorial.odt" target="1778244380">source</a> if you want to correct, enhance, or expand the tutorial.</p>
+<p><a href="http://www.imagemagick.org/Magick++" target="1543287628">Magick++</a> provides an object-oriented C++ interface to ImageMagick. See <a href="http://www.imagemagick.org/Magick++/tutorial/Magick++_tutorial.pdf" target="1569302200">A Gentle Introduction to Magick++</a> for an introductory tutorial to Magick++. We include the <a href="http://www.imagemagick.org/Magick++/tutorial/Magick++_tutorial.odt" target="1836325497">source</a> if you want to correct, enhance, or expand the tutorial.</p>
<div style="margin: auto;">
<h2><a name="java"></a>Java</h2>
</div>
-<p><a href="http://www.jmagick.org" target="1190666296">JMagick</a> provides an object-oriented Java interface to ImageMagick. <a href="http://im4java.sourceforge.net" target="1207747543">Im4java</a> is a pure-java interface to the ImageMagick command-line.</p>
+<p><a href="http://www.jmagick.org" target="1234985553">JMagick</a> provides an object-oriented Java interface to ImageMagick. <a href="http://im4java.sourceforge.net" target="1882585836">Im4java</a> is a pure-java interface to the ImageMagick command-line.</p>
<div style="margin: auto;">
<h2><a name="labview"></a>LabVIEW</h2>
</div>
-<p><a href="http://forums.lavag.org/downloads-file90.html" target="1108645374">LVOOP ImageMagick</a> is an object-oriented LabVIEW interface to ImageMagick.</p>
+<p><a href="http://forums.lavag.org/downloads-file90.html" target="1617838397">LVOOP ImageMagick</a> is an object-oriented LabVIEW interface to ImageMagick.</p>
<div style="margin: auto;">
<h2><a name="lisp"></a>Lisp</h2>
</div>
-<p><a href="http://common-lisp.net/project/cl-magick/" target="1288812207">CL-Magick</a> provides a Common Lisp interface to the ImageMagick library.</p>
+<p><a href="http://common-lisp.net/project/cl-magick/" target="1056694913">CL-Magick</a> provides a Common Lisp interface to the ImageMagick library.</p>
<div style="margin: auto;">
<h2><a name="neko"></a>Neko</h2>
</div>
-<p><a href="http://code.google.com/p/nmagick" target="683562817">NMagick</a> is a port of the ImageMagick library to the haXe and Neko platforms. It provides image manipulation capabilities to both web and desktop applications using Neko.</p>
+<p><a href="http://code.google.com/p/nmagick" target="620089209">NMagick</a> is a port of the ImageMagick library to the haXe and Neko platforms. It provides image manipulation capabilities to both web and desktop applications using Neko.</p>
<div style="margin: auto;">
<h2><a name="dot-net"></a>.NET</h2>
<h2><a name="pascal"></a>Pascal</h2>
</div>
-<p><a href="http://wiki.lazarus.freepascal.org/PascalMagick" target="38372465">PascalMagick</a> a Pascal binding for the MagickWand API and also the low-level MagickCore library. It works with Free Pascal / Lazarus and Delphi.</p>
+<p><a href="http://wiki.lazarus.freepascal.org/PascalMagick" target="2021859163">PascalMagick</a> a Pascal binding for the MagickWand API and also the low-level MagickCore library. It works with Free Pascal / Lazarus and Delphi.</p>
<div style="margin: auto;">
<h2><a name="perl"></a>Perl</h2>
<h2><a name="php"></a>PHP</h2>
</div>
-<p><a href="http://www.magickwand.org/" target="1382678625">MagickWand for PHP</a> a native PHP-extension to the ImageMagick MagickWand API.</p>
+<p><a href="http://www.magickwand.org/" target="1165764962">MagickWand for PHP</a> a native PHP-extension to the ImageMagick MagickWand API.</p>
-<p><a href="http://pecl.php.net/package/imagick" target="2134164939">IMagick</a> is a native PHP extension to create and modify images using the ImageMagick API. Documentation for the extension is available <a href="http://php.net/imagick" target="948988437">here</a>.</p>
+<p><a href="http://pecl.php.net/package/imagick" target="1247875051">IMagick</a> is a native PHP extension to create and modify images using the ImageMagick API. Documentation for the extension is available <a href="http://php.net/imagick" target="1125808605">here</a>.</p>
-<p><a href="http://www.francodacosta.com/phmagick" target="1432895023">phMagick</a> is a wrapper class for ImageMagick, wrapping the most common web image manipulation actions in easy to use functions, but allowing full access to ImageMagick's power by issuing system calls to it's command-line programs.</p>
+<p><a href="http://www.francodacosta.com/phmagick" target="569980696">phMagick</a> is a wrapper class for ImageMagick, wrapping the most common web image manipulation actions in easy to use functions, but allowing full access to ImageMagick's power by issuing system calls to it's command-line programs.</p>
<div style="margin: auto;">
<h2><a name="python"></a>Python</h2>
</div>
-<p><a href="http://www.assembla.com/wiki/show/pythonmagickwand" target="310395953">PythonMagickWand</a> is an object-oriented Python interface to MagickWand based on ctypes.</p>
+<p><a href="http://www.assembla.com/wiki/show/pythonmagickwand" target="1518042962">PythonMagickWand</a> is an object-oriented Python interface to MagickWand based on ctypes.</p>
-<p><a href="http://www.imagemagick.org/download/python/" target="1614461733">PythonMagick</a> is an object-oriented Python interface to ImageMagick.</p>
+<p><a href="http://www.imagemagick.org/download/python/" target="661094729">PythonMagick</a> is an object-oriented Python interface to ImageMagick.</p>
<div style="margin: auto;">
<h2><a name="realbasic"></a>REALbasic</h2>
</div>
-<p>The <a href="http://www.monkeybreadsoftware.de/realbasic/plugin-imagemagick.shtml" target="1149098175">MBS Realbasic ImageMagick</a> is a plugin that utilizes the power of ImageMagick from within the RealBasic environment.</p>
+<p>The <a href="http://www.monkeybreadsoftware.de/realbasic/plugin-imagemagick.shtml" target="278737946">MBS Realbasic ImageMagick</a> is a plugin that utilizes the power of ImageMagick from within the RealBasic environment.</p>
<div style="margin: auto;">
<h2><a name="ruby"></a>Ruby</h2>
</div>
-<p><a href="http://rmagick.rubyforge.org/" target="488208851">RMagick</a> is an interface between the Ruby programming language and the <a href="../www/magick-core.html">MagickCore</a> image processing libraries. Get started with RMagick by perusing the <a href="http://www.imagemagick.org/RMagick/doc/" target="1965733756">documentation</a>.</p>
+<p><a href="http://rmagick.rubyforge.org/" target="1627332362">RMagick</a> is an interface between the Ruby programming language and the <a href="../www/magick-core.html">MagickCore</a> image processing libraries. Get started with RMagick by perusing the <a href="http://www.imagemagick.org/RMagick/doc/" target="404592085">documentation</a>.</p>
-<p><a href="http://magickwand.rubyforge.org/" target="2134342351">MagickWand for Ruby</a> is an interface between the Ruby programming language and the <a href="../www/magick-wand.html">MagickWand</a> image processing libraries. Get started with MagickWand for PHP by perusing the <a href="http://magickwand.rubyforge.org/" target="670930352">documentation</a>.</p>
+<p><a href="http://magickwand.rubyforge.org/" target="914493322">MagickWand for Ruby</a> is an interface between the Ruby programming language and the <a href="../www/magick-wand.html">MagickWand</a> image processing libraries. Get started with MagickWand for PHP by perusing the <a href="http://magickwand.rubyforge.org/" target="1106110652">documentation</a>.</p>
-<p><a href="http://rubyforge.org/projects/mini-magick" target="414261429">MiniMagick</a> is a Ruby wrapper for ImageMagick command line. MiniMagick gives you convenient access to all the command line options ImageMagick supports.</p>
+<p><a href="http://rubyforge.org/projects/mini-magick" target="1773289403">MiniMagick</a> is a Ruby wrapper for ImageMagick command line. MiniMagick gives you convenient access to all the command line options ImageMagick supports.</p>
-<p><a href="http://quickmagick.rubyforge.org/quick_magick" target="1474611175">QuickMagick</a> is a gem for easily accessing ImageMagick command line tools from Ruby programs.</p>
+<p><a href="http://quickmagick.rubyforge.org/quick_magick" target="247475522">QuickMagick</a> is a gem for easily accessing ImageMagick command line tools from Ruby programs.</p>
<div style="margin: auto;">
<h2><a name="tcl"></a>Tcl/Tk</h2>
</div>
-<p><a href="http://tclmagick.sourceforge.net/" target="1650272146">TclMagick</a> a native Tcl-extension to the ImageMagick MagickWand API.</p>
+<p><a href="http://tclmagick.sourceforge.net/" target="1774035703">TclMagick</a> a native Tcl-extension to the ImageMagick MagickWand API.</p>
<div style="margin: auto;">
<h2><a name="xml-rpc"></a>XML RPC</h2>
</div>
-<p><a href="http://code.google.com/p/remotemagick/" target="763659111">RemoteMagick</a> is an XML-RPC web service that creates image thumbnails.</p>
+<p><a href="http://code.google.com/p/remotemagick/" target="1719311691">RemoteMagick</a> is an XML-RPC web service that creates image thumbnails.</p>
\r
</div>\r
\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
-</div>
</div>
</div>
\r
\r
<div class="main">\r
\r
-<p class="navigation-index">[<a href="#CloneImageView">CloneImageView</a> • <a href="#DestroyImageView">DestroyImageView</a> • <a href="#DuplexTransferImageViewIterator">DuplexTransferImageViewIterator</a> • <a href="#GetImageViewAuthenticIndexes">GetImageViewAuthenticIndexes</a> • <a href="#GetImageViewAuthenticPixels">GetImageViewAuthenticPixels</a> • <a href="#GetImageViewException">GetImageViewException</a> • <a href="#GetImageViewHeight">GetImageViewHeight</a> • <a href="#GetImageViewImage">GetImageViewImage</a> • <a href="#GetImageViewIterator">GetImageViewIterator</a> • <a href="#GetImageViewVirtualIndexes">GetImageViewVirtualIndexes</a> • <a href="#GetImageViewVirtualPixels">GetImageViewVirtualPixels</a> • <a href="#GetImageViewWidth">GetImageViewWidth</a> • <a href="#GetImageViewX">GetImageViewX</a> • <a href="#GetImageViewY">GetImageViewY</a> • <a href="#IsImageView">IsImageView</a> • <a href="#NewImageView">NewImageView</a> • <a href="#NewImageViewRegion">NewImageViewRegion</a> • <a href="#SetImageViewIterator">SetImageViewIterator</a> • <a href="#TransferImageViewIterator">TransferImageViewIterator</a> • <a href="#UpdateImageViewIterator">UpdateImageViewIterator</a>]</p>
+<p class="navigation-index">[<a href="#CloneImageView">CloneImageView</a> • <a href="#DestroyImageView">DestroyImageView</a> • <a href="#DuplexTransferImageViewIterator">DuplexTransferImageViewIterator</a> • <a href="#GetImageViewAuthenticIndexes">GetImageViewAuthenticIndexes</a> • <a href="#GetImageViewAuthenticPixels">GetImageViewAuthenticPixels</a> • <a href="#GetImageViewException">GetImageViewException</a> • <a href="#GetImageViewExtent">GetImageViewExtent</a> • <a href="#GetImageViewImage">GetImageViewImage</a> • <a href="#GetImageViewIterator">GetImageViewIterator</a> • <a href="#GetImageViewVirtualIndexes">GetImageViewVirtualIndexes</a> • <a href="#GetImageViewVirtualPixels">GetImageViewVirtualPixels</a> • <a href="#IsImageView">IsImageView</a> • <a href="#NewImageView">NewImageView</a> • <a href="#NewImageViewRegion">NewImageViewRegion</a> • <a href="#SetImageViewIterator">SetImageViewIterator</a> • <a href="#TransferImageViewIterator">TransferImageViewIterator</a> • <a href="#UpdateImageViewIterator">UpdateImageViewIterator</a>]</p>
<h2><a href="http://www.imagemagick.org/api/MagickCore/image-view
_8c.html" target="source" name="CloneImageView">CloneImageView</a></h2>
_8c.html" target="source" name="DuplexTransferImageViewIterator">DuplexTransferImageViewIterator</a></h2>
<div class="doc-section">
-<p>DuplexTransferImageViewIterator() iterates over three image 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 image view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p></ol>
+<p>DuplexTransferImageViewIterator() iterates over three image views in parallel and calls your transfer method for each scanline of the view. The source and duplex pixel extent 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 image view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p></ol>
<p>Use this pragma if the view is not single threaded:</p>
</div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/image-view
-_8c.html" target="source" name="GetImageViewHeight">GetImageViewHeight</a></h2>
+_8c.html" target="source" name="GetImageViewExtent">GetImageViewExtent</a></h2>
<div class="doc-section">
-<p>GetImageViewHeight() returns the image view height.</p></ol>
+<p>GetImageViewExtent() returns the image view extent.</p></ol>
-<p>The format of the GetImageViewHeight method is:</p>
+<p>The format of the GetImageViewExtent method is:</p>
<pre class="code">
- size_t GetImageViewHeight(const ImageView *image_view)
+ RectangleInfo GetImageViewExtent(const ImageView *image_view)
</pre>
<p>A description of each parameter follows:</p></ol>
_8c.html" target="source" name="GetImageViewIterator">GetImageViewIterator</a></h2>
<div class="doc-section">
-<p>GetImageViewIterator() iterates over the image 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></ol>
+<p>GetImageViewIterator() iterates over the image view in parallel and calls your get method for each scanline of the view. The pixel extent 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></ol>
<p>Use this pragma if the view is not single threaded:</p>
<p>A description of each parameter follows:</p></ol>
-<h5>image_view</h5>
-<ol><p>the image view.</p></ol>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/image-view
-_8c.html" target="source" name="GetImageViewWidth">GetImageViewWidth</a></h2>
-<div class="doc-section">
-
-<p>GetImageViewWidth() returns the image view width.</p></ol>
-
-<p>The format of the GetImageViewWidth method is:</p>
-
-<pre class="code">
- size_t GetImageViewWidth(const ImageView *image_view)
-</pre>
-
-<p>A description of each parameter follows:</p></ol>
-
-<h5>image_view</h5>
-<ol><p>the image view.</p></ol>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/image-view
-_8c.html" target="source" name="GetImageViewX">GetImageViewX</a></h2>
-<div class="doc-section">
-
-<p>GetImageViewX() returns the image view x offset.</p></ol>
-
-<p>The format of the GetImageViewX method is:</p>
-
-<pre class="code">
- ssize_t GetImageViewX(const ImageView *image_view)
-</pre>
-
-<p>A description of each parameter follows:</p></ol>
-
-<h5>image_view</h5>
-<ol><p>the image view.</p></ol>
-
- </div>
-<h2><a href="http://www.imagemagick.org/api/MagickCore/image-view
-_8c.html" target="source" name="GetImageViewY">GetImageViewY</a></h2>
-<div class="doc-section">
-
-<p>GetImageViewY() returns the image view y offset.</p></ol>
-
-<p>The format of the GetImageViewY method is:</p>
-
-<pre class="code">
- ssize_t GetImageViewY(const ImageView *image_view)
-</pre>
-
-<p>A description of each parameter follows:</p></ol>
-
<h5>image_view</h5>
<ol><p>the image view.</p></ol>
_8c.html" target="source" name="NewImageView">NewImageView</a></h2>
<div class="doc-section">
-<p>NewImageView() returns a image view required for all other methods in the Pixel View API.</p></ol>
+<p>NewImageView() returns a image view required for all other methods in the Image View API.</p></ol>
<p>The format of the NewImageView method is:</p>
_8c.html" target="source" name="NewImageViewRegion">NewImageViewRegion</a></h2>
<div class="doc-section">
-<p>NewImageViewRegion() returns a image view required for all other methods in the Pixel View API.</p></ol>
+<p>NewImageViewRegion() returns a image view required for all other methods in the Image View API.</p></ol>
<p>The format of the NewImageViewRegion method is:</p>
<ol><p>the magick wand.</p></ol>
<h5>x,y,columns,rows</h5>
-<ol><p>These values define the perimeter of a region of pixel_wands view.</p></ol>
+<ol><p>These values define the perimeter of a extent of pixel_wands view.</p></ol>
</div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/image-view
_8c.html" target="source" name="SetImageViewIterator">SetImageViewIterator</a></h2>
<div class="doc-section">
-<p>SetImageViewIterator() iterates over the image 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></ol>
+<p>SetImageViewIterator() iterates over the image view in parallel and calls your set method for each scanline of the view. The pixel extent 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></ol>
<p>Use this pragma if the view is not single threaded:</p>
_8c.html" target="source" name="TransferImageViewIterator">TransferImageViewIterator</a></h2>
<div class="doc-section">
-<p>TransferImageViewIterator() iterates over two image 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 image view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p></ol>
+<p>TransferImageViewIterator() iterates over two image views in parallel and calls your transfer method for each scanline of the view. The source pixel extent 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 image view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.</p></ol>
<p>Use this pragma if the view is not single threaded:</p>
_8c.html" target="source" name="UpdateImageViewIterator">UpdateImageViewIterator</a></h2>
<div class="doc-section">
-<p>UpdateImageViewIterator() iterates over the image 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></ol>
+<p>UpdateImageViewIterator() iterates over the image view in parallel and calls your update method for each scanline of the view. The pixel extent 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></ol>
<p>Use this pragma if the view is not single threaded:</p>
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
\r
<div class="main">\r
\r
-<p class="navigation-index">[<a href="#MagickAverageImages">MagickAverageImages</a> • <a href="#MagickClipPathImage">MagickClipPathImage</a> • <a href="#DrawGetFillAlpha">DrawGetFillAlpha</a> • <a href="#DrawGetStrokeAlpha">DrawGetStrokeAlpha</a> • <a href="#DrawPeekGraphicWand">DrawPeekGraphicWand</a> • <a href="#DrawPopGraphicContext">DrawPopGraphicContext</a> • <a href="#DrawPushGraphicContext">DrawPushGraphicContext</a> • <a href="#DrawSetFillAlpha">DrawSetFillAlpha</a> • <a href="#DrawSetStrokeAlpha">DrawSetStrokeAlpha</a> • <a href="#MagickColorFloodfillImage">MagickColorFloodfillImage</a> • <a href="#MagickDescribeImage">MagickDescribeImage</a> • <a href="#MagickFlattenImages">MagickFlattenImages</a> • <a href="#MagickGetImageAttribute">MagickGetImageAttribute</a> • <a href="#MagickGetImageMatte">MagickGetImageMatte</a> • <a href="#MagickGetImagePixels">MagickGetImagePixels</a> • <a href="#MagickGetImageSize">MagickGetImageSize</a> • <a href="#MagickMapImage">MagickMapImage</a> • <a href="#MagickMatteFloodfillImage">MagickMatteFloodfillImage</a> • <a href="#MagickMaximumImages">MagickMaximumImages</a> • <a href="#MagickMinimumImages">MagickMinimumImages</a> • <a href="#MagickMosaicImages">MagickMosaicImages</a> • <a href="#MagickOpaqueImage">MagickOpaqueImage</a> • <a href="#MagickPaintFloodfillImage">MagickPaintFloodfillImage</a> • <a href="#MagickPaintOpaqueImage">MagickPaintOpaqueImage</a> • <a href="#MagickPaintTransparentImage">MagickPaintTransparentImage</a> • <a href="#MagickRecolorImage">MagickRecolorImage</a> • <a href="#MagickSetImageAttribute">MagickSetImageAttribute</a> • <a href="#MagickSetImageIndex">MagickSetImageIndex</a> • <a href="#MagickTransparentImage">MagickTransparentImage</a> • <a href="#MagickRegionOfInterestImage">MagickRegionOfInterestImage</a> • <a href="#MagickSetImagePixels">MagickSetImagePixels</a> • <a href="#MagickWriteImageBlob">MagickWriteImageBlob</a> • <a href="#PixelGetNextRow">PixelGetNextRow</a> • <a href="#PixelIteratorGetException">PixelIteratorGetException</a>]</p>
+<p class="navigation-index">[<a href="#MagickAverageImages">MagickAverageImages</a> • <a href="#ClonePixelView">ClonePixelView</a> • <a href="#DestroyPixelView">DestroyPixelView</a> • <a href="#DuplexTransferPixelViewIterator">DuplexTransferPixelViewIterator</a> • <a href="#GetPixelViewException">GetPixelViewException</a> • <a href="#GetPixelViewHeight">GetPixelViewHeight</a> • <a href="#GetPixelViewIterator">GetPixelViewIterator</a> • <a href="#GetPixelViewPixels">GetPixelViewPixels</a> • <a href="#GetPixelViewWand">GetPixelViewWand</a> • <a href="#GetPixelViewWidth">GetPixelViewWidth</a> • <a href="#GetPixelViewX">GetPixelViewX</a> • <a href="#GetPixelViewY">GetPixelViewY</a> • <a href="#IsPixelView">IsPixelView</a> • <a href="#MagickClipPathImage">MagickClipPathImage</a> • <a href="#DrawGetFillAlpha">DrawGetFillAlpha</a> • <a href="#DrawGetStrokeAlpha">DrawGetStrokeAlpha</a> • <a href="#DrawPeekGraphicWand">DrawPeekGraphicWand</a> • <a href="#DrawPopGraphicContext">DrawPopGraphicContext</a> • <a href="#DrawPushGraphicContext">DrawPushGraphicContext</a> • <a href="#DrawSetFillAlpha">DrawSetFillAlpha</a> • <a href="#DrawSetStrokeAlpha">DrawSetStrokeAlpha</a> • <a href="#MagickColorFloodfillImage">MagickColorFloodfillImage</a> • <a href="#MagickDescribeImage">MagickDescribeImage</a> • <a href="#MagickFlattenImages">MagickFlattenImages</a> • <a href="#MagickGetImageAttribute">MagickGetImageAttribute</a> • <a href="#MagickGetImageMatte">MagickGetImageMatte</a> • <a href="#MagickGetImagePixels">MagickGetImagePixels</a> • <a href="#MagickGetImageSize">MagickGetImageSize</a> • <a href="#MagickMapImage">MagickMapImage</a> • <a href="#MagickMatteFloodfillImage">MagickMatteFloodfillImage</a> • <a href="#MagickMaximumImages">MagickMaximumImages</a> • <a href="#MagickMinimumImages">MagickMinimumImages</a> • <a href="#MagickMosaicImages">MagickMosaicImages</a> • <a href="#MagickOpaqueImage">MagickOpaqueImage</a> • <a href="#MagickPaintFloodfillImage">MagickPaintFloodfillImage</a> • <a href="#MagickPaintOpaqueImage">MagickPaintOpaqueImage</a> • <a href="#MagickPaintTransparentImage">MagickPaintTransparentImage</a> • <a href="#MagickRecolorImage">MagickRecolorImage</a> • <a href="#MagickSetImageAttribute">MagickSetImageAttribute</a> • <a href="#MagickSetImageIndex">MagickSetImageIndex</a> • <a href="#MagickTransparentImage">MagickTransparentImage</a> • <a href="#MagickRegionOfInterestImage">MagickRegionOfInterestImage</a> • <a href="#MagickSetImagePixels">MagickSetImagePixels</a> • <a href="#MagickWriteImageBlob">MagickWriteImageBlob</a> • <a href="#NewPixelView">NewPixelView</a> • <a href="#NewPixelViewRegion">NewPixelViewRegion</a> • <a href="#PixelGetNextRow">PixelGetNextRow</a> • <a href="#PixelIteratorGetException">PixelIteratorGetException</a> • <a href="#SetPixelViewIterator">SetPixelViewIterator</a> • <a href="#TransferPixelViewIterator">TransferPixelViewIterator</a> • <a href="#UpdatePixelViewIterator">UpdatePixelViewIterator</a>]</p>
<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
_8c.html" target="source" name="MagickAverageImages">MagickAverageImages</a></h2>
</div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="ClonePixelView">ClonePixelView</a></h2>
+<div class="doc-section">
+
+<p>ClonePixelView() makes a copy of the specified pixel view.</p></ol>
+
+<p>The format of the ClonePixelView method is:</p>
+
+<pre class="code">
+ PixelView *ClonePixelView(const PixelView *pixel_view)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="DestroyPixelView">DestroyPixelView</a></h2>
+<div class="doc-section">
+
+<p>DestroyPixelView() deallocates memory associated with a pixel view.</p></ol>
+
+<p>The format of the DestroyPixelView method is:</p>
+
+<pre class="code">
+ PixelView *DestroyPixelView(PixelView *pixel_view,
+ const size_t number_wands,const size_t number_threads)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+<h5>number_wand</h5>
+<ol><p>the number of pixel wands.</p></ol>
+
+<h5>number_threads</h5>
+<ol><p>number of threads.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="DuplexTransferPixelViewIterator">DuplexTransferPixelViewIterator</a></h2>
+<div class="doc-section">
+
+<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></ol>
+
+<p>Use this pragma:</p>
+
+<pre class="text">
+ #pragma omp critical
+</pre>
+
+<p>to define a section of code in your callback transfer method that must be executed by a single thread at a time.</p></ol>
+
+<p>The format of the DuplexTransferPixelViewIterator method is:</p>
+
+<pre class="code">
+ MagickBooleanType DuplexTransferPixelViewIterator(PixelView *source,
+ PixelView *duplex,PixelView *destination,
+ DuplexTransferPixelViewMethod transfer,void *context)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>source</h5>
+<ol><p>the source pixel view.</p></ol>
+
+<h5>duplex</h5>
+<ol><p>the duplex pixel view.</p></ol>
+
+<h5>destination</h5>
+<ol><p>the destination pixel view.</p></ol>
+
+<h5>transfer</h5>
+<ol><p>the transfer callback method.</p></ol>
+
+<h5>context</h5>
+<ol><p>the user defined context.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="GetPixelViewException">GetPixelViewException</a></h2>
+<div class="doc-section">
+
+<p>GetPixelViewException() returns the severity, reason, and description of any error that occurs when utilizing a pixel view.</p></ol>
+
+<p>The format of the GetPixelViewException method is:</p>
+
+<pre class="code">
+ char *GetPixelViewException(const PixelWand *pixel_view,
+ ExceptionType *severity)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel pixel_view.</p></ol>
+
+<h5>severity</h5>
+<ol><p>the severity of the error is returned here.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="GetPixelViewHeight">GetPixelViewHeight</a></h2>
+<div class="doc-section">
+
+<p>GetPixelViewHeight() returns the pixel view height.</p></ol>
+
+<p>The format of the GetPixelViewHeight method is:</p>
+
+<pre class="code">
+ size_t GetPixelViewHeight(const PixelView *pixel_view)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="GetPixelViewIterator">GetPixelViewIterator</a></h2>
+<div class="doc-section">
+
+<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></ol>
+
+<p>Use this pragma:</p>
+
+<pre class="text">
+ #pragma omp critical
+</pre>
+
+<p>to define a section of code in your callback get method that must be executed by a single thread at a time.</p></ol>
+
+<p>The format of the GetPixelViewIterator method is:</p>
+
+<pre class="code">
+ MagickBooleanType GetPixelViewIterator(PixelView *source,
+ GetPixelViewMethod get,void *context)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>source</h5>
+<ol><p>the source pixel view.</p></ol>
+
+<h5>get</h5>
+<ol><p>the get callback method.</p></ol>
+
+<h5>context</h5>
+<ol><p>the user defined context.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="GetPixelViewPixels">GetPixelViewPixels</a></h2>
+<div class="doc-section">
+
+<p>GetPixelViewPixels() returns the pixel view pixel_wands.</p></ol>
+
+<p>The format of the GetPixelViewPixels method is:</p>
+
+<pre class="code">
+ PixelWand *GetPixelViewPixels(const PixelView *pixel_view)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="GetPixelViewWand">GetPixelViewWand</a></h2>
+<div class="doc-section">
+
+<p>GetPixelViewWand() returns the magick wand associated with the pixel view.</p></ol>
+
+<p>The format of the GetPixelViewWand method is:</p>
+
+<pre class="code">
+ MagickWand *GetPixelViewWand(const PixelView *pixel_view)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="GetPixelViewWidth">GetPixelViewWidth</a></h2>
+<div class="doc-section">
+
+<p>GetPixelViewWidth() returns the pixel view width.</p></ol>
+
+<p>The format of the GetPixelViewWidth method is:</p>
+
+<pre class="code">
+ size_t GetPixelViewWidth(const PixelView *pixel_view)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="GetPixelViewX">GetPixelViewX</a></h2>
+<div class="doc-section">
+
+<p>GetPixelViewX() returns the pixel view x offset.</p></ol>
+
+<p>The format of the GetPixelViewX method is:</p>
+
+<pre class="code">
+ ssize_t GetPixelViewX(const PixelView *pixel_view)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="GetPixelViewY">GetPixelViewY</a></h2>
+<div class="doc-section">
+
+<p>GetPixelViewY() returns the pixel view y offset.</p></ol>
+
+<p>The format of the GetPixelViewY method is:</p>
+
+<pre class="code">
+ ssize_t GetPixelViewY(const PixelView *pixel_view)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="IsPixelView">IsPixelView</a></h2>
+<div class="doc-section">
+
+<p>IsPixelView() returns MagickTrue if the the parameter is verified as a pixel view container.</p></ol>
+
+<p>The format of the IsPixelView method is:</p>
+
+<pre class="code">
+ MagickBooleanType IsPixelView(const PixelView *pixel_view)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>pixel_view</h5>
+<ol><p>the pixel view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
_8c.html" target="source" name="MagickClipPathImage">MagickClipPathImage</a></h2>
<div class="doc-section">
</div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="NewPixelView">NewPixelView</a></h2>
+<div class="doc-section">
+
+<p>NewPixelView() returns a pixel view required for all other methods in the Pixel View API.</p></ol>
+
+<p>The format of the NewPixelView method is:</p>
+
+<pre class="code">
+ PixelView *NewPixelView(MagickWand *wand)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>wand</h5>
+<ol><p>the wand.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="NewPixelViewRegion">NewPixelViewRegion</a></h2>
+<div class="doc-section">
+
+<p>NewPixelViewRegion() returns a pixel view required for all other methods in the Pixel View API.</p></ol>
+
+<p>The format of the NewPixelViewRegion method is:</p>
+
+<pre class="code">
+ 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></ol>
+
+<h5>wand</h5>
+<ol><p>the magick wand.</p></ol>
+
+<h5>x,y,columns,rows</h5>
+<ol><p>These values define the perimeter of a region of pixel_wands view.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
_8c.html" target="source" name="PixelGetNextRow">PixelGetNextRow</a></h2>
<div class="doc-section">
<ol><p>the severity of the error is returned here.</p></ol>
</div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="SetPixelViewIterator">SetPixelViewIterator</a></h2>
+<div class="doc-section">
+
+<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></ol>
+
+<p>Use this pragma:</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></ol>
+
+<p>The format of the SetPixelViewIterator method is:</p>
+
+<pre class="code">
+ MagickBooleanType SetPixelViewIterator(PixelView *destination,
+ SetPixelViewMethod set,void *context)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>destination</h5>
+<ol><p>the pixel view.</p></ol>
+
+<h5>set</h5>
+<ol><p>the set callback method.</p></ol>
+
+<h5>context</h5>
+<ol><p>the user defined context.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="TransferPixelViewIterator">TransferPixelViewIterator</a></h2>
+<div class="doc-section">
+
+<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></ol>
+
+<p>Use this pragma:</p>
+
+<pre class="text">
+ #pragma omp critical
+</pre>
+
+<p>to define a section of code in your callback transfer method that must be executed by a single thread at a time.</p></ol>
+
+<p>The format of the TransferPixelViewIterator method is:</p>
+
+<pre class="code">
+ MagickBooleanType TransferPixelViewIterator(PixelView *source,
+ PixelView *destination,TransferPixelViewMethod transfer,void *context)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>source</h5>
+<ol><p>the source pixel view.</p></ol>
+
+<h5>destination</h5>
+<ol><p>the destination pixel view.</p></ol>
+
+<h5>transfer</h5>
+<ol><p>the transfer callback method.</p></ol>
+
+<h5>context</h5>
+<ol><p>the user defined context.</p></ol>
+
+ </div>
+<h2><a href="http://www.imagemagick.org/api/MagickWand/deprecate
+_8c.html" target="source" name="UpdatePixelViewIterator">UpdatePixelViewIterator</a></h2>
+<div class="doc-section">
+
+<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></ol>
+
+<p>Use this pragma:</p>
+
+<pre class="text">
+ #pragma omp critical
+</pre>
+
+<p>to define a section of code in your callback update method that must be executed by a single thread at a time.</p></ol>
+
+<p>The format of the UpdatePixelViewIterator method is:</p>
+
+<pre class="code">
+ MagickBooleanType UpdatePixelViewIterator(PixelView *source,
+ UpdatePixelViewMethod update,void *context)
+</pre>
+
+<p>A description of each parameter follows:</p></ol>
+
+<h5>source</h5>
+<ol><p>the source pixel view.</p></ol>
+
+<h5>update</h5>
+<ol><p>the update callback method.</p></ol>
+
+<h5>context</h5>
+<ol><p>the user defined context.</p></ol>
+
+ </div>
\r
</div>\r
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
+<div class="sponsor">
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
+<div class="sponsor">
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
\r
<p class="navigation-index">[<a href="#animate">animate</a> • <a href="#compare">compare</a> • <a href="#composite">composite</a> • <a href="#conjure">conjure</a> • <a href="#convert">convert</a> • <a href="#display">display</a> • <a href="#identify">identify</a> • <a href="#import">import</a> • <a href="#mogrify">mogrify</a> • <a href="#montage">montage</a> • <a href="#stream">stream</a>]</p>
-<p>ImageMagick includes a number of command-line utilities for manipulating images. Most of you are probably accustomed to editing images one at a time with a graphical user interface (GUI) with such programs as <a href="http://www.gimp.org" target="1460115314">gimp</a> or <a href="http://www.adobe.com" target="148562135">Photoshop</a>. However, a GUI is not always convenient. Suppose you want to process an image dynamically from a web script or you want to apply the same operations to many images or repeat a specific operation at different times to the same or different image. For these types of operations, the command-line image processing utility is appropriate.</p>
+<p>ImageMagick includes a number of command-line utilities for manipulating images. Most of you are probably accustomed to editing images one at a time with a graphical user interface (GUI) with such programs as <a href="http://www.gimp.org" target="1053193634">gimp</a> or <a href="http://www.adobe.com" target="1020454810">Photoshop</a>. However, a GUI is not always convenient. Suppose you want to process an image dynamically from a web script or you want to apply the same operations to many images or repeat a specific operation at different times to the same or different image. For these types of operations, the command-line image processing utility is appropriate.</p>
<p>The ImageMagick command-line tools exit with a status of 0 if the command line arguments have a proper syntax and no problems are encountered. Expect a descriptive message and an exit status of 1 if any exception occurs such as improper syntax, a problem reading or writing an image, or any other problem that prevents the command from completing successfully.</p>
-<p>In the paragraphs below, find a short description for each command-line tool. Click on the program name to get details about the program usage and a list of command-line options that alters how the program behaves. If you are just getting acquainted with ImageMagick, start with the <a href="#convert">convert</a> program. Be sure to peruse Anthony Thyssen's tutorial on how to use ImageMagick utilities to <a href="http://www.imagemagick.org/Usage/" target="33045796">convert, compose, or edit</a> images from the command-line.</p>
+<p>In the paragraphs below, find a short description for each command-line tool. Click on the program name to get details about the program usage and a list of command-line options that alters how the program behaves. If you are just getting acquainted with ImageMagick, start with the <a href="#convert">convert</a> program. Be sure to peruse Anthony Thyssen's tutorial on how to use ImageMagick utilities to <a href="http://www.imagemagick.org/Usage/" target="282388718">convert, compose, or edit</a> images from the command-line.</p>
<div style="margin: auto;">
<h2><a name="animate"></a><a href="../www/animate.html">animate</a></h2>
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<h2>Contact the Development Team</h2>
</div>
- <p>Use this form to contact the ImageMagick Wizards for any of the issues listed below. You can expect a reply within 24-48 hours if your message is on topic and is a sponsorshp, license, or security issue. The bug and documentation issues are for reporting only. For any other issue, post your message to the <a href="http://www.imagemagick.org/discourse-server" target="156201139">discourse server</a>.</p>
+ <p>Use this form to contact the ImageMagick Wizards for any of the issues listed below. You can expect a reply within 24-48 hours if your message is on topic and is a sponsorshp, license, or security issue. The bug and documentation issues are for reporting only. For any other issue, post your message to the <a href="http://www.imagemagick.org/discourse-server" target="1073550710">discourse server</a>.</p>
<fieldset>
<legend>Contact the Wizards</legend>
<p>Enter this code, <em class="warn">
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
\r
<div class="main">\r
\r
-<p>Here are a few examples of what you can do with an image using ImageMagick from the command line, a program interface, or script. You can generate this image yourself with this <a href="../www/perl-magick.html">PerlMagick</a> script, <a href="../www/source/examples.pl" target="1636389627">examples.pl</a>.</p><br />
+<p>Here are a few examples of what you can do with an image using ImageMagick from the command line, a program interface, or script. You can generate this image yourself with this <a href="../www/perl-magick.html">PerlMagick</a> script, <a href="../www/source/examples.pl" target="1234182728">examples.pl</a>.</p><br />
<div class="viewport">
<img src="../images/examples.jpg" alt="[ImageMagick]" width="734" height="2972" border="0" name="titlebar-west" />
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
\r
<p>The next generation of ImageMagick, version 5, started when Bob Friesenhahn contacted me and suggested I improve the application programming interface so users could leverage the image-processing algorithms from other languages or scripts. Bob also wrote a C++ wrapper for ImageMagick called Magick++, and began contributing enhancements such as the module loader facility, automatic file identification, and test suites. In the mean-time, the project picked up a few other notable contributors: Glenn Randers-Pehrson, William Radcliffe, and Leonard Rosenthol. By now, ImageMagick was being utilized by tens of thousands of users, who reacted gruffly when a new release broke an existing API call or script. The other members of the group wanted to freeze the API and command line but I was not quite ready, since ImageMagick was not quite what I had envisioned it could be. Bob and the others created a fork of ImageMagick while I continued to develop ImageMagick.</p>\r
\r
-<p>I did not work alone for long. Anthony Thyssen contacted me about deficiencies in the ImageMagick command line programs. He pointed out that the command line was confusing when dealing with more than one image. He suggested an orderly, well-defined method for dealing with the command line, and this became ImageMagick version 6 (the current release). His efforts are detailed on his web pages, <a href="http://www.imagemagick.org/Usage/" target="838024326">Examples of ImageMagick Usage</a>. I highly recommend that you peruse his site. He has illustrated the power of ImageMagick in ways that even I did not know were possible.</p>\r
+<p>I did not work alone for long. Anthony Thyssen contacted me about deficiencies in the ImageMagick command line programs. He pointed out that the command line was confusing when dealing with more than one image. He suggested an orderly, well-defined method for dealing with the command line, and this became ImageMagick version 6 (the current release). His efforts are detailed on his web pages, <a href="http://www.imagemagick.org/Usage/" target="1380461342">Examples of ImageMagick Usage</a>. I highly recommend that you peruse his site. He has illustrated the power of ImageMagick in ways that even I did not know were possible.</p>\r
\r
<p>Another notable contributer, Fred Weinhaus, makes available a plethora of command-line <a href="http://www.fmwconcepts.com/imagemagick/">scripts</a> that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations.</p>\r
\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<h2><a name="command-line"></a>Command-line Tutorials</h2>
</div>
<ul>
- <dt><a href="http://www.imagemagick.org/Usage/" target="783523541">Examples of ImageMagick Usage</a></dt>
- <dt><a href="http://software.newsforge.com/article.pl?sid=05/04/29/1358220" target="2014884832">Advanced image editing from the command line with ImageMagick</a></dt>
- <dt><a href="http://www.applematters.com/index.html/section/comments/1113/" target="46455033">Best Open Source Software for the Macintosh</a></dt>
- <dt><a href="http://software.newsforge.com/article.pl?sid=05/07/01/1959251" target="1136275418">Command-line animations using ImageMagick</a></dt>
- <dt><a href="http://www.builderau.com.au/program/linux/soa/Convert_images_with_open_source_ImageMagick/0,339028299,339271774,00.htm" target="2004844255">Convert Images with Open Source ImageMagick</a></dt>
- <dt><a href="http://polishlinux.org/apps/graphics/enchanting-pictures-with-imagemagick/" target="787152510">Enchanting Pictures with ImageMagick</a></dt>
- <dt><a href="http://www-106.ibm.com/developerworks/library/l-graf/?ca=dnt-428" target="1240877916">Graphics from the Command Line</a></dt>
- <dt><a href="http://www.ars-informatica.ca/article.html?article=22" target="220731089">Image creation, conversion and manipulation with ImageMagick</a></dt>
- <dt><a href="http://www.applematters.com/index.html/section/comments/2104/" target="1796727798">Image Editing for Power Users on the Mac</a></dt>
- <dt><a href="http://applications.linux.com/article.pl?sid=05/03/29/1525217" target="710121788">ImageMagick: A graphics wizard for the command line</a></dt>
- <dt><a href="http://www.ioncannon.net/linux/81/5-imagemagick-command-line-examples-part-1/" target="1922101547">ImageMagick command line examples - part 1</a></dt>
- <dt><a href="http://www.ioncannon.net/linux/72/5-imagemagick-command-line-examples-part-2/" target="474982168">ImageMagick command line examples - part 2</a></dt>
- <dt><a href="http://www.rabuser.info/jmagick.html" target="1551857429">ImageMagick & Java</a></dt>
- <dt><a href="http://www.jpeek.com/articles/linuxmag/0606.pdf" target="232740032">ImageMagick, Part One</a></dt>
- <dt><a href="http://www.jpeek.com/articles/linuxmag/0607.pdf" target="1296512844">ImageMagick, Part Two</a></dt>
- <dt><a href="http://www-106.ibm.com/developerworks/library/l-graf2/?ca=dgr-lnxw15GraphicsLine" target="1601715278">More Graphics from the Command Line</a></dt>
- <dt><a href="http://www.ffnn.nl/pages/projects/ubuntu-firefox-themes.html" target="640049665">Ubuntu Firefox Themes</a></dt>
+ <dt><a href="http://www.imagemagick.org/Usage/" target="1602108281">Examples of ImageMagick Usage</a></dt>
+ <dt><a href="http://software.newsforge.com/article.pl?sid=05/04/29/1358220" target="1460273997">Advanced image editing from the command line with ImageMagick</a></dt>
+ <dt><a href="http://www.applematters.com/index.html/section/comments/1113/" target="103971866">Best Open Source Software for the Macintosh</a></dt>
+ <dt><a href="http://software.newsforge.com/article.pl?sid=05/07/01/1959251" target="2130131894">Command-line animations using ImageMagick</a></dt>
+ <dt><a href="http://www.builderau.com.au/program/linux/soa/Convert_images_with_open_source_ImageMagick/0,339028299,339271774,00.htm" target="2143712927">Convert Images with Open Source ImageMagick</a></dt>
+ <dt><a href="http://polishlinux.org/apps/graphics/enchanting-pictures-with-imagemagick/" target="324873720">Enchanting Pictures with ImageMagick</a></dt>
+ <dt><a href="http://www-106.ibm.com/developerworks/library/l-graf/?ca=dnt-428" target="249141323">Graphics from the Command Line</a></dt>
+ <dt><a href="http://www.ars-informatica.ca/article.html?article=22" target="1982672865">Image creation, conversion and manipulation with ImageMagick</a></dt>
+ <dt><a href="http://www.applematters.com/index.html/section/comments/2104/" target="1352433383">Image Editing for Power Users on the Mac</a></dt>
+ <dt><a href="http://applications.linux.com/article.pl?sid=05/03/29/1525217" target="1261555996">ImageMagick: A graphics wizard for the command line</a></dt>
+ <dt><a href="http://www.ioncannon.net/linux/81/5-imagemagick-command-line-examples-part-1/" target="1047500279">ImageMagick command line examples - part 1</a></dt>
+ <dt><a href="http://www.ioncannon.net/linux/72/5-imagemagick-command-line-examples-part-2/" target="1662381230">ImageMagick command line examples - part 2</a></dt>
+ <dt><a href="http://www.rabuser.info/jmagick.html" target="1348063072">ImageMagick & Java</a></dt>
+ <dt><a href="http://www.jpeek.com/articles/linuxmag/0606.pdf" target="1720138057">ImageMagick, Part One</a></dt>
+ <dt><a href="http://www.jpeek.com/articles/linuxmag/0607.pdf" target="1220578268">ImageMagick, Part Two</a></dt>
+ <dt><a href="http://www-106.ibm.com/developerworks/library/l-graf2/?ca=dgr-lnxw15GraphicsLine" target="901898239">More Graphics from the Command Line</a></dt>
+ <dt><a href="http://www.ffnn.nl/pages/projects/ubuntu-firefox-themes.html" target="693848986">Ubuntu Firefox Themes</a></dt>
</ul>
<div style="margin: auto;">
</div>
<ul>
- <dt><a href="http://www-128.ibm.com/developerworks/openwww/source/library/os-mosaic/?ca=dgr-lnxw09MosaicImages" target="1992956462">Create Mosaic Images with Perl and ImageMagick</a></dt>
- <dt><a href="http://builder.com.com/5100-6371-5924990.html" target="71249583">Convert images for printing with MagickWand for PHP</a></dt>
- <dt><a href="http://www.sitepoint.com/article/dynamic-images-imagemagick" target="1011274367">Create Dynamic Images with ImageMagick</a></dt>
- <dt><a href="http://www.clearimageonline.com/builder/pdf/imageservices.pdf" target="1949461328">Image Services Add-on for Aestiva's HTML/OS and H2O</a></dt>
- <dt><a href="http://www.ioncannon.net/php/75/how-to-compile-imagemagick-for-php-by-hand/" target="1024305520">How to compile ImageMagick for PHP by hand</a></dt>
- <dt><a href="http://members.shaw.ca/el.supremo/MagickWand/" target="1158857880">MagickWand Examples in C</a></dt>
- <dt><a href="http://www.html-editors.com/contest/1/82-read.html" target="1967564366">PHP Extensions: MagickWand for PHP</a></dt>
- <dt><a href="http://www.evolt.org/article/PHP_frontend_to_ImageMagick/17/55650/" target="584112693">PHP frontend to ImageMagick</a></dt>
- <dt><a href="http://www.ioncannon.net/php/61/php-imagemagick-magickwand-examples/" target="596148139">PHP ImageMagick MagickWand Examples</a></dt>
- <dt><a href="http://www.imagemagick.org/RMagick/doc/rvgtut.html" target="1392385758">RVG - Ruby Vector Graphics</a></dt>
- <dt><a href="http://www.devshed.com/c/a/PHP/Security-Images-with-PHP-and-ImageMagick/" target="746888172">Security Images with PHP and ImageMagick</a></dt>
- <dt><a href="http://www.rubblewebs.co.uk/imagemagick/" target="1805896186">Simple Uses of PHP and ImageMagick</a></dt>
+ <dt><a href="http://www-128.ibm.com/developerworks/openwww/source/library/os-mosaic/?ca=dgr-lnxw09MosaicImages" target="341849965">Create Mosaic Images with Perl and ImageMagick</a></dt>
+ <dt><a href="http://builder.com.com/5100-6371-5924990.html" target="811239612">Convert images for printing with MagickWand for PHP</a></dt>
+ <dt><a href="http://www.sitepoint.com/article/dynamic-images-imagemagick" target="138801075">Create Dynamic Images with ImageMagick</a></dt>
+ <dt><a href="http://www.clearimageonline.com/builder/pdf/imageservices.pdf" target="384328646">Image Services Add-on for Aestiva's HTML/OS and H2O</a></dt>
+ <dt><a href="http://www.ioncannon.net/php/75/how-to-compile-imagemagick-for-php-by-hand/" target="607681389">How to compile ImageMagick for PHP by hand</a></dt>
+ <dt><a href="http://members.shaw.ca/el.supremo/MagickWand/" target="2095395646">MagickWand Examples in C</a></dt>
+ <dt><a href="http://www.html-editors.com/contest/1/82-read.html" target="703789514">PHP Extensions: MagickWand for PHP</a></dt>
+ <dt><a href="http://www.evolt.org/article/PHP_frontend_to_ImageMagick/17/55650/" target="188442608">PHP frontend to ImageMagick</a></dt>
+ <dt><a href="http://www.ioncannon.net/php/61/php-imagemagick-magickwand-examples/" target="1860488579">PHP ImageMagick MagickWand Examples</a></dt>
+ <dt><a href="http://www.imagemagick.org/RMagick/doc/rvgtut.html" target="2136205940">RVG - Ruby Vector Graphics</a></dt>
+ <dt><a href="http://www.devshed.com/c/a/PHP/Security-Images-with-PHP-and-ImageMagick/" target="1653400700">Security Images with PHP and ImageMagick</a></dt>
+ <dt><a href="http://www.rubblewebs.co.uk/imagemagick/" target="320193822">Simple Uses of PHP and ImageMagick</a></dt>
</ul>
<div style="margin: auto;">
</div>
<ul>
- <dt><a href="http://beta.bigmedium.com/blog/imagemagick-install-osx.shtml" target="1356772558">Installing ImageMagick on Mac OS X</a></dt>
- <dt><a href="http://www.cloudgoessocial.net/2010/02/10/imagemagick-for-iphone-via-snowleopard/" target="233498611">ImageMagick on iPhone</a></dt>
- <dt><a href="http://www.cloudgoessocial.net/2009/07/09/imagemagick-on-iphone-xcode/" target="441936079">ImageMagick on iPhone - Xcode</a></dt>
- <dt><a href="http://www.digitalsanctum.com/?s=ImageMagick" target="1224173742">Installing ImageMagick from Source on Ubuntu</a></dt>
+ <dt><a href="http://beta.bigmedium.com/blog/imagemagick-install-osx.shtml" target="1399591238">Installing ImageMagick on Mac OS X</a></dt>
+ <dt><a href="http://www.cloudgoessocial.net/2010/02/10/imagemagick-for-iphone-via-snowleopard/" target="1709627091">ImageMagick on iPhone</a></dt>
+ <dt><a href="http://www.cloudgoessocial.net/2009/07/09/imagemagick-on-iphone-xcode/" target="1922302103">ImageMagick on iPhone - Xcode</a></dt>
+ <dt><a href="http://www.digitalsanctum.com/?s=ImageMagick" target="712381587">Installing ImageMagick from Source on Ubuntu</a></dt>
</ul>
<div style="margin: auto;">
</div>
<ul>
- <dt><a href="http://www.xs4all.nl/%7Ebvdwolf/main/foto/down_sample/down_sample.htm" target="279953645">Down-sampling Methods</a></dt>
+ <dt><a href="http://www.xs4all.nl/%7Ebvdwolf/main/foto/down_sample/down_sample.htm" target="1813598957">Down-sampling Methods</a></dt>
</ul>
<div style="margin: auto;">
<h2><a name="book-review"></a>ImageMagick Book Review</h2>
</div>
<ul>
- <dt><a href="http://www.linux.com/article.pl?sid=06/09/29/1917210" target="1578211497">Book review: ImageMagick Tricks</a></dt>
- <dt><a href="http://books.slashdot.org/books/06/03/13/1442239.shtml" target="1081534349">The Definitive Guide To ImageMagick</a></dt>
+ <dt><a href="http://www.linux.com/article.pl?sid=06/09/29/1917210" target="1904950349">Book review: ImageMagick Tricks</a></dt>
+ <dt><a href="http://books.slashdot.org/books/06/03/13/1442239.shtml" target="708610866">The Definitive Guide To ImageMagick</a></dt>
</ul>
<div style="margin: auto;">
<h2><a name="command-line"></a>Mailing List Archives</h2>
</div>
<ul>
- <dt><a href="http://www.archivesat.com/ImageMagick_Users_List/" target="1067106155">ImageMagick Users List</a></dt>
- <dt><a href="http://www.archivesat.com/ImageMagick_Developer_List/" target="671605766">ImageMagick Developers List</a></dt>
- <dt><a href="http://www.archivesat.com/ImageMagick_Defect_Support/" target="1302265439">ImageMagick Bugs List</a></dt>
+ <dt><a href="http://www.archivesat.com/ImageMagick_Users_List/" target="2138472677">ImageMagick Users List</a></dt>
+ <dt><a href="http://www.archivesat.com/ImageMagick_Developer_List/" target="6608025">ImageMagick Developers List</a></dt>
+ <dt><a href="http://www.archivesat.com/ImageMagick_Defect_Support/" target="543800084">ImageMagick Bugs List</a></dt>
</ul>
<div style="margin: auto;">
</div>
<dl>
<dt>Denmark</dt>
- <dd><a href="http://imagemagick.europnews.de" target="716350305">http://imagemagick.europnews.de</a></dd><br />
+ <dd><a href="http://imagemagick.europnews.de" target="1343422412">http://imagemagick.europnews.de</a></dd><br />
<dt>Germany</dt>
- <dd><a href="http://imagemagick.linux-mirror.org" target="1381727554">http://imagemagick.linux-mirror.org</a></dd><br />
+ <dd><a href="http://imagemagick.linux-mirror.org" target="1268164021">http://imagemagick.linux-mirror.org</a></dd><br />
<dt>Ireland</dt>
- <dd><a href="http://imagemagick.oss-mirror.org" target="1076883338">http://imagemagick.oss-mirror.org</a></dd><br />
+ <dd><a href="http://imagemagick.oss-mirror.org" target="1591300363">http://imagemagick.oss-mirror.org</a></dd><br />
<dt>United States</dt>
- <dd><a href="http://www.imagemagick.org" target="1191332474">http://www.imagemagick.org</a></dd>
+ <dd><a href="http://www.imagemagick.org" target="858319995">http://www.imagemagick.org</a></dd>
</dl>
<div style="margin: auto;">
</div>
<ul>
- <dt><a href="http://gmic.sourceforge.net/" target="786101335">G'MIC</a>: convert, manipulate and visualize generic 1D/2D/3D multi-spectral image files</dt>
- <dt><a href="http://www.beesoft.org/index.html?id=imagicom" target="1309623370">Image Commander</a>: bulk picture processing with a GUI</dt>
+ <dt><a href="http://gmic.sourceforge.net/" target="468743446">G'MIC</a>: convert, manipulate and visualize generic 1D/2D/3D multi-spectral image files</dt>
+ <dt><a href="http://www.beesoft.org/index.html?id=imagicom" target="1163954772">Image Commander</a>: bulk picture processing with a GUI</dt>
</ul>
<div style="margin: auto;">
<h2><a name="other-projects"></a>Other Projects Hosted by ImageMagick Studio</h2>
</div>
<ul>
- <dt><a href="http://www.wizards-toolkit.org" target="340361670">Wizard's Toolkit</a></dt>
- <dt><a href="http://www.multipole.org" target="240332965">Computational Simulation of Multi-Body Interactions with O(n) Scaling</a></dt>
+ <dt><a href="http://www.wizards-toolkit.org" target="2078898263">Wizard's Toolkit</a></dt>
+ <dt><a href="http://www.multipole.org" target="1370641685">Computational Simulation of Multi-Body Interactions with O(n) Scaling</a></dt>
</ul>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
#include <magick/MagickCore.h>
static MagickBooleanType SigmoidalContrast(ImageView *contrast_view,
- void *context)
+ const ssize_t y,const int id,void *context)
{
#define QuantumScale ((MagickRealType) 1.0/(MagickRealType) QuantumRange)
#define SigmoidalContrast(x) \
(QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503)
+ RectangleInfo
+ extent;
+
register IndexPacket
*indexes;
register ssize_t
x;
+ extent=GetImageViewExtent(contrast_view);
pixels=GetImageViewAuthenticPixels(contrast_view);
- for (x=0; x < (ssize_t) GetImageViewWidth(contrast_view); x++)
+ for (x=0; x < (ssize_t) (extent.width-extent.x); x++)
{
pixels[x].red=RoundToQuantum(SigmoidalContrast(pixels[x].red));
pixels[x].green=RoundToQuantum(SigmoidalContrast(pixels[x].green));
}
indexes=GetImageViewAuthenticIndexes(contrast_view);
if (indexes != (IndexPacket *) NULL)
- for (x=0; x < (ssize_t) GetImageViewWidth(contrast_view); x++)
+ for (x=0; x < (ssize_t) (extent.width-extent.x); x++)
indexes[x]=(IndexPacket) RoundToQuantum(SigmoidalContrast(indexes[x]));
return(MagickTrue);
}
CatchException(exception); \
if (contrast_image != (Image *) NULL) \
contrast_image=DestroyImage(contrast_image); \
- exception=DestroyExceptionInfo(exception); \
- image_info=DestroyImageInfo(image_info); \
- MagickCoreTerminus(); \
+ exit(-1); \
+}
+#define ThrowViewException(view) \
+{ \
+ char \
+ *description; \
+ \
+ ExceptionType \
+ severity; \
+ \
+ description=GetImageViewException(view,&severity); \
+ (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
+ description=DestroyString(description); \
exit(-1); \
}
#include <wand/MagickWand.h>
static MagickBooleanType SigmoidalContrast(WandView *pixel_view,
- void *context)
+ const ssize_t y,const int id,void *context)
{
#define QuantumScale ((MagickRealType) 1.0/(MagickRealType) QuantumRange)
#define SigmoidalContrast(x) \
(QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503)
+ RectangleInfo
+ extent;
+
MagickPixelPacket
pixel;
register long
x;
+ extent=GetWandViewExtent(contrast_view);
pixels=GetWandViewPixels(contrast_view);
- for (x=0; x < (long) GetWandViewWidth(contrast_view); x++)
+ for (x=0; x < (long) (extent.width-extent.height); x++)
{
PixelGetMagickColor(pixels[x],&pixel);
pixel.red=SigmoidalContrast(pixel.red);
int main(int argc,char **argv)
{
+#define ThrowViewException(view) \
+{ \
+ description=GetWandViewException(view,&severity); \
+ (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
+ description=(char *) MagickRelinquishMemory(description); \
+ exit(-1); \
+}
#define ThrowWandException(wand) \
{ \
- char \
- *description; \
- \
- ExceptionType \
- severity; \
- \
- description=MagickGetException(wand,&severity); \
+ description=MagickGetException(wand,&severity); \
(void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
description=(char *) MagickRelinquishMemory(description); \
exit(-1); \
}
+ char
+ *description;
+
+ ExceptionType
+ severity;
+
MagickBooleanType
status;
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<p>The ImageMagick web site is available from a variety of web mirrors around the world listed below.</p>
<dl class="magick-mirror">
<dt>France</dt>
- <dd><a href="http://imagemagick.europnews.de/" target="1057291824">http://imagemagick.europnews.de/</a></dd><br />
+ <dd><a href="http://imagemagick.europnews.de/" target="464520430">http://imagemagick.europnews.de/</a></dd><br />
<dt>Unites States</dt>
- <dd><a href="http://www.imagemagick.org/" target="1171664659">http://www.imagemagick.org/</a></dd>
+ <dd><a href="http://www.imagemagick.org/" target="2040972325">http://www.imagemagick.org/</a></dd>
</dl>
<p>If you want to add a new web-site mirror, please <a href="http://www.imagemagick.org/script/contact.php">contact us</a>.</p>
\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
+<div class="sponsor">
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+</div>
</div>
</div>
\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+ <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
</div>
</div>
</div>
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
-</div>
</div>
</div>
\r
<dl>\r
<dd><a href="../www/index.html">Introduction</a>: convert, edit, and compose images from the command-line or program interface.</dd>\r
<dd><a href="../www/examples.html">Examples of ImageMagick usage</a>: a few examples that show what you can do with an image using ImageMagick.</dd>\r
- <dd><a href="http://www.imagemagick.org/Usage/" target="411211278">Anthony Thyssen's examples of ImageMagick usage</a>: a comprehensive tutorial of using ImageMagick from the command line.</dd>\r
+ <dd><a href="http://www.imagemagick.org/Usage/" target="1672848181">Anthony Thyssen's examples of ImageMagick usage</a>: a comprehensive tutorial of using ImageMagick from the command line.</dd>\r
<dd><a href="../www/color.html">Color names</a>: how to specify a color name, a hex color, or a numerical RGB, RGBA, HSL, HSLA, CMYK, or CMYKA color.</dd>\r
<dd><a href="../www/resources.html">Resources</a>: ImageMagick depends on external resources including configuration files, loadable modules, fonts, and environment variables.</dd>\r
<dd><a href="../www/architecture.html">Architecture</a>: get to know more about the software and algorithms behind ImageMagick.</dd>\r
<dl>\r
<dd><a href="../www/download.html">Download ImageMagick</a>: ImageMagick source and binary distributions are available from a variety of FTP and Web mirrors.</dd>\r
<ul>\r
- <dd><a href="http://www.imagemagick.org/download" target="1593902802">Unix source</a>: Unix source distributions.</dd>\r
- <dd><a href="http://www.imagemagick.org/download/windows" target="1562864936">Windows source</a>: Windows source distributions.</dd>\r
- <dd><a href="http://www.imagemagick.org/download/binaries" target="1225229667">Unix and Windows binaries</a>: Unix and Windows binary distributions.</dd>\r
+ <dd><a href="http://www.imagemagick.org/download" target="665630667">Unix source</a>: Unix source distributions.</dd>\r
+ <dd><a href="http://www.imagemagick.org/download/windows" target="280429760">Windows source</a>: Windows source distributions.</dd>\r
+ <dd><a href="http://www.imagemagick.org/download/binaries" target="1389609844">Unix and Windows binaries</a>: Unix and Windows binary distributions.</dd>\r
<dd><a href="../www/subversion.html">Subversion repository</a>: stable and development source releases.</dd>\r
- <dd><a href="http://www.magickwand.org/" target="1291304198">MagickWand for PHP</a>: a native PHP-extension to the ImageMagick MagickWand API.</dd>\r
- <dd><a href="http://www.imagemagick.org/download/delegates" target="2139517152">Delegate libraries</a>: ImageMagick depends on a number of optional delegate libraries to extend its functionality.</dd>\r
+ <dd><a href="http://www.magickwand.org/" target="118312721">MagickWand for PHP</a>: a native PHP-extension to the ImageMagick MagickWand API.</dd>\r
+ <dd><a href="http://www.imagemagick.org/download/delegates" target="1823717388">Delegate libraries</a>: ImageMagick depends on a number of optional delegate libraries to extend its functionality.</dd>\r
</ul>\r
</dl>\r
\r
<dd><a href="../www/command-line-processing.html">Command line processing</a>: the anatomy of the command line.</dd>\r
<dd><a href="../www/command-line-options.html">Command line options</a>: annotated list of all options that can appear on the command-line.</dd>\r
<dd><a href="../www/fx.html">Fx</a>: apply a mathematical expression to an image or image channels.</dd>\r
- <dd><a href="http://www.fmwconcepts.com/imagemagick/" target="1730686478">Fred's ImageMagick Scripts</a>: a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations.</dd>\r
+ <dd><a href="http://www.fmwconcepts.com/imagemagick/" target="811428397">Fred's ImageMagick Scripts</a>: a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations.</dd>\r
</dl>\r
\r
<div style="margin: auto;">\r
<dl>\r
<dd><a href="../www/api.html">Program interfaces</a>: application programming interfaces.</dd>\r
<ul>\r
- <dd><a href="http://www.imagemagick.org/ChMagick" target="1423201016">ChMagick</a>: is a <a href="http://www.softintegration.com/" target="1576767716">Ch</a> an embeddable MagickCore C/C++ interpreter for cross-platform scripting.</dd>\r
- <dd><a href="http://common-lisp.net/project/cl-magick/" target="2005388074">CL-Magick</a>: provides a Common Lisp interface to the ImageMagick library.</dd>\r
- <dd><a href="https://gna.org/projects/g2f/" target="1914501182">G2F</a>: implements an Ada 95 binding to a subset of the low-level MagickCore library.</dd>\r
- <dd><a href="http://www.imagemagick.org/Magick++" target="982663212">Magick++</a>: provides an object-oriented C++ interface to ImageMagick.</dd>\r
- <dd><a href="http://pecl.php.net/package/imagick" target="908460201">IMagick</a>: is a native PHP extension to create and modify images using the ImageMagick API.</dd>\r
- <dd><a href="http://www.yeo.id.au/jmagick/" target="1499788545">JMagick</a>: provides an object-oriented Java interface to ImageMagick.</dd>\r
+ <dd><a href="http://www.imagemagick.org/ChMagick" target="1954638218">ChMagick</a>: is a <a href="http://www.softintegration.com/" target="911219294">Ch</a> an embeddable MagickCore C/C++ interpreter for cross-platform scripting.</dd>\r
+ <dd><a href="http://common-lisp.net/project/cl-magick/" target="546530585">CL-Magick</a>: provides a Common Lisp interface to the ImageMagick library.</dd>\r
+ <dd><a href="https://gna.org/projects/g2f/" target="1424992967">G2F</a>: implements an Ada 95 binding to a subset of the low-level MagickCore library.</dd>\r
+ <dd><a href="http://www.imagemagick.org/Magick++" target="1967914207">Magick++</a>: provides an object-oriented C++ interface to ImageMagick.</dd>\r
+ <dd><a href="http://pecl.php.net/package/imagick" target="1166619794">IMagick</a>: is a native PHP extension to create and modify images using the ImageMagick API.</dd>\r
+ <dd><a href="http://www.yeo.id.au/jmagick/" target="1299368483">JMagick</a>: provides an object-oriented Java interface to ImageMagick.</dd>\r
<dd><a href="../www/magick-core.html">MagickCore</a>: C API, recommended for wizard-level developers.</dd>\r
<dd><a href="../www/magick-wand.html">MagickWand</a>: convert, compose, and edit images from the C language.</dd>\r
- <dd><a href="http://www.magickwand.org/" target="528117958">MagickWand for PHP</a>: a native PHP-extension to the ImageMagick MagickWand API.</dd>\r
- <dd><a href="http://code.google.com/p/nmagick" target="619581566">nMagick</a>: is a port of the ImageMagick library to the haXe and Neko platforms.</dd>\r
- <dd><a href="http://wiki.lazarus.freepascal.org/index.html/PascalMagick" target="1624626913">PascalMagick</a>: a Pascal binding for the MagickWand API and also the low-level MagickCore library.</dd>\r
+ <dd><a href="http://www.magickwand.org/" target="986195522">MagickWand for PHP</a>: a native PHP-extension to the ImageMagick MagickWand API.</dd>\r
+ <dd><a href="http://code.google.com/p/nmagick" target="267011198">nMagick</a>: is a port of the ImageMagick library to the haXe and Neko platforms.</dd>\r
+ <dd><a href="http://wiki.lazarus.freepascal.org/index.html/PascalMagick" target="277693440">PascalMagick</a>: a Pascal binding for the MagickWand API and also the low-level MagickCore library.</dd>\r
<dd><a href="../www/perl-magick.html">PerlMagick</a>: convert, compose, and edit images from the Perl language.</dd>\r
- <dd><a href="http://www.imagemagick.org/download/python/" target="584187129">PythonMagick</a>: an object-oriented Python interface to ImageMagick.</dd>\r
- <dd><a href="http://rmagick.rubyforge.org/" target="1563516981">RMagick</a>: is an interface between the Ruby programming language and ImageMagick.</dd>\r
- <dd><a href="http://tclmagick.sourceforge.net/" target="595385021">TclMagick</a>: a native Tcl-extension to the ImageMagick MagickWand API.</dd>\r
+ <dd><a href="http://www.imagemagick.org/download/python/" target="1556176218">PythonMagick</a>: an object-oriented Python interface to ImageMagick.</dd>\r
+ <dd><a href="http://rmagick.rubyforge.org/" target="1785054160">RMagick</a>: is an interface between the Ruby programming language and ImageMagick.</dd>\r
+ <dd><a href="http://tclmagick.sourceforge.net/" target="938788169">TclMagick</a>: a native Tcl-extension to the ImageMagick MagickWand API.</dd>\r
</ul>\r
</dl>\r
\r
</div>\r
\r
<dl>\r
- <dd><a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&camp=1789&tag=imagemagick-20&creative=9325&path=tg/detail/-/1590595904/qid=1123551819/sr=8-1/ref=pd_bbs_sbs_1?v=glance%26s=books%26n=507846" target="1821886792">Definitive Guide to ImageMagick</a>: this book explains ImageMagick in a practical, learn-by-example fashion.</dd>\r
- <dd><a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&camp=1789&tag=imagemagick-20&creative=9325&path=tg/detail/-/1904811868/qid=1123551819/sr=8-1/ref=pd_bbs_sbs_1?v=glance%26s=books%26n=507846" target="898674280">ImageMagick Tricks</a>: this book is packed with examples of photo manipulations, logo creation, animations, and complete web projects.</dd>\r
+ <dd><a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&camp=1789&tag=imagemagick-20&creative=9325&path=tg/detail/-/1590595904/qid=1123551819/sr=8-1/ref=pd_bbs_sbs_1?v=glance%26s=books%26n=507846" target="1834914164">Definitive Guide to ImageMagick</a>: this book explains ImageMagick in a practical, learn-by-example fashion.</dd>\r
+ <dd><a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&camp=1789&tag=imagemagick-20&creative=9325&path=tg/detail/-/1904811868/qid=1123551819/sr=8-1/ref=pd_bbs_sbs_1?v=glance%26s=books%26n=507846" target="1264902875">ImageMagick Tricks</a>: this book is packed with examples of photo manipulations, logo creation, animations, and complete web projects.</dd>\r
<dd><a href="http://www.imagemagick.org/discourse-server">Discourse server</a>: get help from fellow ImageMagick users and developers, post to these forums.</dd>\r
<dd><a href="http://www.imagemagick.org/script/contact.php">Contact the Wizards</a>: for bug reports (only if you do not want to sign up to the <a href="http://www.imagemagick.org/discourse-server">discourse server</a>), a source or documentation patch, a security or license issue, or if you want to be a sponsor of the ImageMagick project.</dd>\r
</dl>\r
</div>\r
\r
<dl>\r
- <dd><a href="http://www.imagemagick.org/discourse-server/viewforum.html?f=3" target="669510275">Report bugs and vulnerabilities</a>: our highest priority is to fix security defects and bug reports, usually within 48 hours of your report. The bug discourse server requires that you register. If you do not want to register, you can <a href="contact.html">contact the ImageMagick developers</a> with a convenient web form.</dd>\r
+ <dd><a href="http://www.imagemagick.org/discourse-server/viewforum.html?f=3" target="1343380254">Report bugs and vulnerabilities</a>: our highest priority is to fix security defects and bug reports, usually within 48 hours of your report. The bug discourse server requires that you register. If you do not want to register, you can <a href="contact.html">contact the ImageMagick developers</a> with a convenient web form.</dd>\r
<dd><a href="../www/sponsors.html">Sponsor ImageMagick</a>: contribute bug fixes, enhancements, hardware, funds, etc. to ensure the ImageMagick project thrives.</dd>\r
<dd><a href="../www/t-shirt.html">ImageMagick t-shirt</a>: donate $25 USD and we acknowledge your gift with a logoed t-shirt.</dd>\r
</dl>\r
<h2><a name="sandbox"></a>Technology Sandbox</h2>\r
</div>\r
<dl>\r
- <dd><a href="http://www.fmwconcepts.com/imagemagick/linkcounter.html?dir=fourier_transforms/&linkname=fourier.html" target="59540511">Fourier Transform Processing With ImageMagick</a></dd>\r
- <dd><a href="http://www.imagemagick.org/Usage/fourier/" target="1911981620">ImageMagick v6 Examples -- Fourier Transforms</a></dd>\r
+ <dd><a href="http://www.fmwconcepts.com/imagemagick/linkcounter.html?dir=fourier_transforms/&linkname=fourier.html" target="601923838">Fourier Transform Processing With ImageMagick</a></dd>\r
+ <dd><a href="http://www.imagemagick.org/Usage/fourier/" target="223529879">ImageMagick v6 Examples -- Fourier Transforms</a></dd>\r
</dl>\r
\r
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
+<div class="sponsor">
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
+</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
+ <a title="Sponsor: Webdesign" href="http://www.renehornig.com/" title="Webdesign">Webdesign</a><!-- 20111001000240 -->
</div>
</div>
</div>
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r
<div class="sponsor">
<a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
-<div class="sponsor">
- <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/" title="Online-Magazin">Online-Magazin</a><!-- 20101101000200 -->
-</div>
</div>
</div>
\r
<!-- <span id="linkbar-west"> </span> -->\r
<span id="linkbar-center">\r
<a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> •\r
- <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
+ <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
</span>\r
<span id="linkbar-east"> </span>\r
</div>\r