NAME

pixel_iterator - Pixel iterator pattern support functions


SYNOPSIS

MagickPassFail PixelIterateDualModify( PixelIteratorDualModifyCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *source_image, const long source_x, const long source_y, Image *update_image, const long update_x, const long update_y, ExceptionInfo *exception );

MagickPassFail PixelIterateDualNew( PixelIteratorDualNewCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *source_image, const long source_x, const long source_y, Image *new_image, const long new_x, const long new_y, ExceptionInfo *exception );

MagickPassFail PixelIterateDualNew( PixelIteratorDualNewCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *source_image, const long source_x, const long source_y, Image *new_image, const long new_x, const long new_y, ExceptionInfo *exception );

MagickPassFail PixelIterateDualRead( PixelIteratorDualReadCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *first_image, const long first_x, const long first_y, const Image *second_image, const long second_x, const long second_y, ExceptionInfo *exception );;

MagickPassFail PixelIterateMonoModify( PixelIteratorMonoModifyCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const long x, const long y, const unsigned long columns, const unsigned long rows, Image *image, ExceptionInfo *exception );

MagickPassFail PixelIterateMonoRead( PixelIteratorMonoReadCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const long x, const long y, const unsigned long columns, const unsigned long rows, const Image *image, ExceptionInfo *exception );

MagickPassFail PixelIterateTripleModify( PixelIteratorTripleModifyCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *source1_image, const Image *source2_image, const long source_x, const long source_y, Image *update_image, const long update_x, const long update_y, ExceptionInfo *exception );


FUNCTION DESCRIPTIONS

PixelIterateMonoRead

PixelIterateMonoRead() iterates through a region of an image and invokes a user-provided callback function ( of type PixelRowIteratorMonoReadCallback ) for a row of pixels. This is useful to support simple operations such as statistics computation.

The format of the PixelIterateMonoRead method is:

MagickPassFail PixelIterateMonoRead ( PixelIteratorMonoReadCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const long x, const long y, const unsigned long columns, const unsigned long rows, const Image *image, ExceptionInfo *exception );

A description of each parameter follows:

call_back:

A user-provided C callback function which is passed the address of pixels from each image.

description:

textual description of operation being performed.

mutable_data:

User-provided mutable context data.

immutable_data:

User-provided immutable context data.

x:

The horizontal ordinate of the top left corner of the region.

y:

The vertical ordinate of the top left corner of the region.

columns:

Width of pixel region

rows:

Height of pixel region

image:

The address of the Image.

exception:

If an error is reported, this argument is updated with the reason.

PixelIterateMonoModify

PixelIterateMonoModify() iterates through a region of an image and invokes a user-provided callback function ( of type PixelIteratorMonoReadCallback ) for a region of pixels. This is useful to support simple operations such as level shifting, colorspace translation, or thresholding.

The format of the PixelIterateMonoModify method is:

MagickPassFail PixelIterateMonoModify ( PixelIteratorMonoModifyCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const long x, const long y, const unsigned long columns, const unsigned long rows, Image *image, ExceptionInfo *exception );

A description of each parameter follows:

call_back:

A user-provided C callback function which is passed the address of pixels from each image.

description:

textual description of operation being performed.

mutable_data:

User-provided mutable context data.

immutable_data:

User-provided immutable context data.

x:

The horizontal ordinate of the top left corner of the region.

y:

The vertical ordinate of the top left corner of the region.

columns:

Width of pixel region

rows:

Height of pixel region

image:

The address of the Image.

exception:

If an error is reported, this argument is updated with the reason.

PixelIterateDualRead

PixelIterateDualRead() iterates through pixel regions of two images and invokes a user-provided callback function ( of type PixelIteratorDualReadCallback ) for each row of pixels. This is useful to support operations such as image comparison.

The format of the PixelIterateDualModify method is:

MagickPassFail PixelIterateDualRead ( PixelIteratorDualReadCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *first_image, const long first_x, const long first_y, const Image *second_image, const long second_x, const long second_y, ExceptionInfo *exception );;

A description of each parameter follows:

call_back:

A user-provided C callback function which is passed the address of pixels from each image.

description:

textual description of operation being performed.

mutable_data:

User-provided mutable context data.

immutable_data:

User-provided immutable context data.

columns:

Width of pixel region

rows:

Height of pixel region

first_image:

The address of the first Image.

first_x:

The horizontal ordinate of the top left corner of the first region.

first_y:

The vertical ordinate of the top left corner of the first region.

second_image:

The address of the second Image.

second_x:

The horizontal ordinate of the top left corner of the second region.

second_y:

The vertical ordinate of the top left corner of the second region.

exception:

If an error is reported, this argument is updated with the reason.

PixelIterateDualModify

PixelIterateDualModify() iterates through pixel regions of two images and invokes a user-provided callback function ( of type PixelIteratorDualModifyCallback ) for each row of pixels. This is useful to support operations such as composition.

The format of the PixelIterateDualModify method is:

MagickPassFail PixelIterateDualModify ( PixelIteratorDualModifyCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *source_image, const long source_x, const long source_y, Image *update_image, const long update_x, const long update_y, ExceptionInfo *exception );

A description of each parameter follows:

call_back:

A user-provided C callback function which reads from a region of source pixels and updates a region of destination pixels.

description:

textual description of operation being performed.

mutable_data:

User-provided mutable context data.

immutable_data:

User-provided immutable context data.

columns:

Width of pixel region

rows:

Height of pixel region

source_image:

The address of the constant source Image.

source_x:

The horizontal ordinate of the top left corner of the source region.

source_y:

The vertical ordinate of the top left corner of the source region.

update_image:

The address of the update Image.

update_x:

The horizontal ordinate of the top left corner of the update region.

update_y:

The vertical ordinate of the top left corner of the update region.

exception:

If an error is reported, this argument is updated with the reason.

PixelIterateDualNew

PixelIterateDualNew() iterates through pixel regions of two images and invokes a user-provided callback function ( of type PixelIteratorDualNewCallback ) for each row of pixels. This is used if a new output image is created based on an input image. The difference from PixelIterateDualModify ( ) is that the output pixels are not initialized so it is more efficient when outputting a new image.

The format of the PixelIterateDualNew method is:

MagickPassFail PixelIterateDualNew ( PixelIteratorDualNewCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *source_image, const long source_x, const long source_y, Image *new_image, const long new_x, const long new_y, ExceptionInfo *exception );

A description of each parameter follows:

call_back:

A user-provided C callback function which reads from a region of source pixels and initializes a region of destination pixels.

description:

textual description of operation being performed.

mutable_data:

User-provided mutable context data.

immutable_data:

User-provided immutable context data.

columns:

Width of pixel region

rows:

Height of pixel region

source_image:

The address of the constant source Image.

source_x:

The horizontal ordinate of the top left corner of the source region.

source_y:

The vertical ordinate of the top left corner of the source region.

new_image:

The address of the new Image.

new_x:

The horizontal ordinate of the top left corner of the new region.

new_y:

The vertical ordinate of the top left corner of the new region.

exception:

If an error is reported, this argument is updated with the reason.

PixelIterateTripleModify

PixelIterateTripleModify() iterates through pixel regions of three images and invokes a user-provided callback function ( of type PixelIteratorTripleModifyCallback ) for each row of pixels. The first two images are read-only, while the third image is read-write for update. Access of the first two images is done lock-step using the same coordinates. This is useful to support operations such as image differencing.

The format of the PixelIterateTripleModify method is:

MagickPassFail PixelIterateTripleModify ( PixelIteratorTripleModifyCallback call_back, const char *description, void *mutable_data, const void *immutable_data, const unsigned long columns, const unsigned long rows, const Image *source1_image, const Image *source2_image, const long source_x, const long source_y, Image *update_image, const long update_x, const long update_y, ExceptionInfo *exception );

A description of each parameter follows:

call_back:

A user-provided C callback function which reads from a region of source pixels and updates a region of destination pixels.

description:

textual description of operation being performed.

mutable_data:

User-provided mutable context data.

immutable_data:

User-provided immutable context data.

columns:

Width of pixel region

rows:

Height of pixel region

source1_image:

The address of the constant source 1 Image.

source2_image:

The address of the constant source 2 Image.

source_x:

The horizontal ordinate of the top left corner of the source regions.

source_y:

The vertical ordinate of the top left corner of the source regions.

update_image:

The address of the update Image.

update_x:

The horizontal ordinate of the top left corner of the update region.

update_y:

The vertical ordinate of the top left corner of the update region.

exception:

If an error is reported, this argument is updated with the reason.

PixelIterateDualNew

PixelIterateTripleNew() iterates through pixel regions of three images and invokes a user-provided callback function (of type PixelIteratorTripleNewCallback) for each row of pixels. The first two images are read-only, while the third image is read-write for update. Access of the first two images is done lock-step using the same coordinates. This is used if a new output image is created based on two input images. The difference from PixelIterateTripleModify() is that the output pixels are not initialized so it is more efficient when outputting a new image.

The format of the PixelIterateTripleNew method is:

    MagickPassFail PixelIterateTripleNew(
                              PixelIteratorTripleNewCallback call_back,
                              const char *description,
                              void *mutable_data,
                              const void *immutable_data,
                              const unsigned long columns,
                              const unsigned long rows,
                              const Image *source1_image,
                              const Image *source2_image,
                              const long source_x,
                              const long source_y,
                              Image *new_image,
                              const long new_x,
                              const long new_y,
                              ExceptionInfo *exception)

A description of each parameter follows:

call_back:

A user-provided C callback function which reads from a region of source pixels and initializes a region of destination pixels.

description:

textual description of operation being performed.

mutable_data:

User-provided mutable context data.

immutable_data:

User-provided immutable context data.

columns:

Width of pixel region

rows:

Height of pixel region

source1_image:

The address of the constant source 1 Image.

source2_image:

The address of the constant source 2 Image.

source_x:

The horizontal ordinate of the top left corner of the source regions.

source_y:

The vertical ordinate of the top left corner of the source regions.

new_image:

The address of the new Image.

new_x:

The horizontal ordinate of the top left corner of the new region.

new_y:

The vertical ordinate of the top left corner of the new region.

exception:

If an error is reported, this argument is updated with the reason.