const int
id = GetOpenMPThreadId();
- const Quantum
+ register const Quantum
*p;
register ssize_t
% %
% %
% %
+% G e t O n e C a c h e V i e w V i r t u a l P i x e l I n f o %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% GetOneCacheViewVirtualPixelInfo() returns a single pixel at the specified
+% (x,y) location. The image background color is returned if an error occurs.
+% If you plan to modify the pixel, use GetOneCacheViewAuthenticPixel() instead.
+%
+% The format of the GetOneCacheViewVirtualPixelInfo method is:
+%
+% MagickBooleanType GetOneCacheViewVirtualPixelInfo(
+% const CacheView *cache_view,const ssize_t x,const ssize_t y,
+% PixelInfo *pixel,ExceptionInfo *exception)
+%
+% A description of each parameter follows:
+%
+% o cache_view: the cache view.
+%
+% o x,y: These values define the offset of the pixel.
+%
+% o pixel: return a pixel at the specified (x,y) location.
+%
+% o exception: return any errors or warnings in this structure.
+%
+*/
+MagickExport MagickBooleanType GetOneCacheViewVirtualPixelInfo(
+ const CacheView *cache_view,const ssize_t x,const ssize_t y,PixelInfo *pixel,
+ ExceptionInfo *exception)
+{
+ const int
+ id = GetOpenMPThreadId();
+
+ register const Quantum
+ *p;
+
+ assert(cache_view != (CacheView *) NULL);
+ assert(cache_view->signature == MagickSignature);
+ assert(id < (int) cache_view->number_threads);
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
+ p=GetVirtualPixelsFromNexus(cache_view->image,
+ cache_view->virtual_pixel_method,x,y,1,1,cache_view->nexus_info[id],
+ exception);
+ GetPixelInfo(cache_view->image,pixel);
+ if (p == (const Quantum *) NULL)
+ return(MagickFalse);
+ GetPixelInfoPixel(cache_view->image,p,pixel);
+ return(MagickTrue);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% G e t O n e C a c h e V i e w V i r t u a l P i x e l %
% %
% %
*GetCacheViewVirtualMetacontent(const CacheView *);
extern MagickExport MagickBooleanType
- GetOneCacheViewVirtualPixel(const CacheView *,const ssize_t,const ssize_t,
+ GetOneCacheViewAuthenticPixel(const CacheView *,const ssize_t,const ssize_t,
Quantum *,ExceptionInfo *),
GetOneCacheViewVirtualMethodPixel(const CacheView *,const VirtualPixelMethod,
const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
- GetOneCacheViewAuthenticPixel(const CacheView *,const ssize_t,const ssize_t,
+ GetOneCacheViewVirtualPixel(const CacheView *,const ssize_t,const ssize_t,
Quantum *,ExceptionInfo *),
+ GetOneCacheViewVirtualPixelInfo(const CacheView *,const ssize_t,const ssize_t,
+ PixelInfo *,ExceptionInfo *),
SetCacheViewStorageClass(CacheView *,const ClassType,ExceptionInfo *),
SetCacheViewVirtualPixelMethod(CacheView *,const VirtualPixelMethod),
SyncCacheViewAuthenticPixels(CacheView *,ExceptionInfo *) magick_hot_spot;
*GetVirtualMetacontent(const Image *);
extern MagickExport MagickBooleanType
- GetOneVirtualPixelInfo(const Image *,const VirtualPixelMethod,
- const ssize_t,const ssize_t,PixelInfo *,ExceptionInfo *),
- GetOneVirtualPixel(const Image *,const ssize_t,const ssize_t,Quantum *,
- ExceptionInfo *),
GetOneAuthenticPixel(Image *,const ssize_t,const ssize_t,Quantum *,
ExceptionInfo *),
+ GetOneVirtualPixel(const Image *,const ssize_t,const ssize_t,Quantum *,
+ ExceptionInfo *),
+ GetOneVirtualPixelInfo(const Image *,const VirtualPixelMethod,
+ const ssize_t,const ssize_t,PixelInfo *,ExceptionInfo *),
PersistPixelCache(Image *,const char *,const MagickBooleanType,
MagickOffsetType *,ExceptionInfo *),
SyncAuthenticPixels(Image *,ExceptionInfo *) magick_hot_spot;
case ExchangeChannelOp:
case TransferChannelOp:
{
+ if (LocaleCompare(token,"black") == 0)
+ SetImageColorspace(destination_image,CMYKColorspace,exception);
i=ParsePixelChannelOption(token);
if (i < 0)
{
pixel,
target;
- Quantum
- virtual_pixel[CompositePixelChannel];
-
/*
Update color information using replace algorithm.
*/
- (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) x_offset,
- (ssize_t) y_offset,virtual_pixel,exception);
- target.red=(double) virtual_pixel[RedPixelChannel];
- target.green=(double) virtual_pixel[GreenPixelChannel];
- target.blue=(double) virtual_pixel[BluePixelChannel];
- target.alpha=(double) virtual_pixel[AlphaPixelChannel];
+ (void) GetOneCacheViewVirtualPixelInfo(image_view,(ssize_t)
+ x_offset,(ssize_t) y_offset,&target,exception);
if ((*image)->storage_class == DirectClass)
{
for (y=0; y < (int) (*image)->rows; y++)
pixel,
target;
- Quantum
- virtual_pixel[CompositePixelChannel];
-
/*
Update matte information using replace algorithm.
*/
- (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) x_offset,
- (ssize_t) y_offset,virtual_pixel,exception);
- target.red=(double) virtual_pixel[RedPixelChannel];
- target.green=(double) virtual_pixel[GreenPixelChannel];
- target.blue=(double) virtual_pixel[BluePixelChannel];
- target.alpha=(double) virtual_pixel[AlphaPixelChannel];
+ (void) GetOneCacheViewVirtualPixelInfo(image_view,(ssize_t)
+ x_offset,(ssize_t) y_offset,&target,exception);
for (y=0; y < (int) (*image)->rows; y++)
{
q=GetCacheViewAuthenticPixels(image_view,0,(ssize_t) y,
PixelInfo
pixel;
- Quantum
- virtual_pixel[CompositePixelChannel];
-
register int
j;
x_offset=(int) (width*(tile % (((int) image->columns-x)/width))+x);
y_offset=(int) (height*(tile/(((int) image->columns-x)/width))+y);
image_view=AcquireCacheView(image);
- (void) GetOneCacheViewVirtualPixel(image_view,0,0,virtual_pixel,
- exception);
- pixel.red=(double) virtual_pixel[RedPixelChannel];
- pixel.green=(double) virtual_pixel[GreenPixelChannel];
- pixel.blue=(double) virtual_pixel[BluePixelChannel];
- pixel.alpha=(double) virtual_pixel[AlphaPixelChannel];
+ (void) GetOneCacheViewVirtualPixelInfo(image_view,0,0,&pixel,exception);
for (i=0; i < (int) height; i++)
{
s=GetCacheViewAuthenticPixels(image_view,(ssize_t) x_offset,(ssize_t)
pixel,
target;
- Quantum
- virtual_pixel[CompositePixelChannel];
-
- (void) GetOneCacheViewVirtualPixel(image_view,x,y,virtual_pixel,
+ (void) GetOneCacheViewVirtualPixelInfo(image_view,x,y,&target,
exception);
- target.red=(double) virtual_pixel[RedPixelChannel];
- target.green=(double) virtual_pixel[GreenPixelChannel];
- target.blue=(double) virtual_pixel[BluePixelChannel];
- target.alpha=(double) virtual_pixel[AlphaPixelChannel];
for (y=0; y < (ssize_t) image->rows; y++)
{
register Quantum
pixel,
target;
- Quantum
- virtual_pixel[CompositePixelChannel];
-
- (void) GetOneCacheViewVirtualPixel(image_view,x,y,virtual_pixel,
+ (void) GetOneCacheViewVirtualPixelInfo(image_view,x,y,&target,
exception);
- target.red=(double) virtual_pixel[RedPixelChannel];
- target.green=(double) virtual_pixel[GreenPixelChannel];
- target.blue=(double) virtual_pixel[BluePixelChannel];
- target.alpha=(double) virtual_pixel[AlphaPixelChannel];
for (y=0; y < (ssize_t) image->rows; y++)
{
register Quantum
{
for (x=0; (x < (ssize_t) watermark->columns) && (j < (ssize_t) depth); x++)
{
- Quantum
- virtual_pixel[CompositePixelChannel];
-
ssize_t
offset;
- (void) GetOneCacheViewVirtualPixel(watermark_view,x,y,virtual_pixel,
+ (void) GetOneCacheViewVirtualPixelInfo(watermark_view,x,y,&pixel,
exception);
- pixel.red=(double) virtual_pixel[RedPixelChannel];
- pixel.green=(double) virtual_pixel[GreenPixelChannel];
- pixel.blue=(double) virtual_pixel[BluePixelChannel];
- pixel.alpha=(double) virtual_pixel[AlphaPixelChannel];
offset=k/(ssize_t) stegano_image->columns;
if (offset >= (ssize_t) stegano_image->rows)
break;
Pixmap
annotate_pixmap;
- Quantum
- virtual_pixel[CompositePixelChannel];
-
unsigned int
depth,
height,
x=0;
y=0;
(void) XParseGeometry(annotate_info->geometry,&x,&y,&width,&height);
- (void) GetOneVirtualPixel(image,(ssize_t) x,(ssize_t) y,virtual_pixel,
- exception);
- annotate_image->background_color.red=(double)
- virtual_pixel[RedPixelChannel];
- annotate_image->background_color.green=(double)
- virtual_pixel[GreenPixelChannel];
- annotate_image->background_color.blue=(double)
- virtual_pixel[BluePixelChannel];
- annotate_image->background_color.alpha=(double)
- virtual_pixel[AlphaPixelChannel];
+ (void) GetOneVirtualPixelInfo(image,UndefinedVirtualPixelMethod,(ssize_t) x,
+ (ssize_t) y,&annotate_image->background_color,exception);
if (annotate_info->stencil == ForegroundStencil)
annotate_image->matte=MagickTrue;
annotate_view=AcquireCacheView(annotate_image);
MagickBooleanType
matte;
- Quantum
- virtual_pixel[CompositePixelChannel];
-
Pixmap
draw_pixmap;
x=0;
y=0;
(void) XParseGeometry(draw_info->geometry,&x,&y,&width,&height);
- (void) GetOneVirtualPixel(image,(ssize_t) x,(ssize_t) y,virtual_pixel,
- exception);
- draw_image->background_color.red=(double) virtual_pixel[RedPixelChannel];
- draw_image->background_color.green=(double) virtual_pixel[GreenPixelChannel];
- draw_image->background_color.blue=(double) virtual_pixel[BluePixelChannel];
- draw_image->background_color.alpha=(double) virtual_pixel[AlphaPixelChannel];
+ (void) GetOneVirtualPixelInfo(image,UndefinedVirtualPixelMethod,(ssize_t) x,
+ (ssize_t) y,&draw_image->background_color,exception);
if (SetImageStorageClass(draw_image,DirectClass,exception) == MagickFalse)
return(MagickFalse);
draw_image->matte=MagickTrue;
PixelInfo
target;
- Quantum
- virtual_pixel[MaxPixelChannels];
-
- GetPixelInfo(image,&target);
- (void) GetOneVirtualPixel(image,0,0,virtual_pixel,exception);
- target.red=virtual_pixel[RedPixelChannel];
- target.green=virtual_pixel[GreenPixelChannel];
- target.blue=virtual_pixel[BluePixelChannel];
- target.alpha=virtual_pixel[AlphaPixelChannel];
+ (void) GetOneVirtualPixelInfo(image,UndefinedVirtualPixelMethod,
+ 0,0,&target,exception);
if (attribute_flag[0] != 0)
(void) QueryColorCompliance(argument_list[0].string_reference,
AllCompliance,&target,exception);
PixelInfo
target;
- Quantum
- virtual_pixel[MaxPixelChannels];
-
draw_info=CloneDrawInfo(info ? info->image_info :
(ImageInfo *) NULL,(DrawInfo *) NULL);
if (attribute_flag[0] != 0)
if (attribute_flag[3] != 0)
(void) QueryColorCompliance(argument_list[3].string_reference,
AllCompliance,&draw_info->fill,exception);
- (void) GetOneVirtualPixel(image,geometry.x,geometry.y,virtual_pixel,
- exception);
- target.red=virtual_pixel[RedPixelChannel];
- target.green=virtual_pixel[GreenPixelChannel];
- target.blue=virtual_pixel[BluePixelChannel];
- target.alpha=virtual_pixel[AlphaPixelChannel];
+ (void) GetOneVirtualPixelInfo(image,UndefinedVirtualPixelMethod,
+ geometry.x,geometry.y,&target,exception);
invert=MagickFalse;
if (attribute_flag[4] != 0)
{
PixelInfo
target;
- Quantum
- virtual_pixel[MaxPixelChannels];
-
draw_info=CloneDrawInfo(info ? info->image_info : (ImageInfo *) NULL,
(DrawInfo *) NULL);
if (attribute_flag[0] != 0)
geometry.y=argument_list[2].integer_reference;
if (image->matte == MagickFalse)
(void) SetImageAlpha(image,OpaqueAlpha,exception);
- (void) GetOneVirtualPixel(image,geometry.x,geometry.y,virtual_pixel,
- exception);
- target.red=virtual_pixel[RedPixelChannel];
- target.green=virtual_pixel[GreenPixelChannel];
- target.blue=virtual_pixel[BluePixelChannel];
- target.alpha=virtual_pixel[AlphaPixelChannel];
+ (void) GetOneVirtualPixelInfo(image,UndefinedVirtualPixelMethod,
+ geometry.x,geometry.y,&target,exception);
if (attribute_flag[4] != 0)
QueryColorCompliance(argument_list[4].string_reference,
AllCompliance,&target,exception);
PixelInfo
target;
- Quantum
- virtual_pixel[MaxPixelChannels];
-
draw_info=CloneDrawInfo(info ? info->image_info :
(ImageInfo *) NULL,(DrawInfo *) NULL);
if (attribute_flag[0] != 0)
if (attribute_flag[3] != 0)
(void) QueryColorCompliance(argument_list[3].string_reference,
AllCompliance,&draw_info->fill,exception);
- (void) GetOneVirtualPixel(image,geometry.x,geometry.y,virtual_pixel,
- exception);
- target.red=virtual_pixel[RedPixelChannel];
- target.green=virtual_pixel[GreenPixelChannel];
- target.blue=virtual_pixel[BluePixelChannel];
- target.alpha=virtual_pixel[AlphaPixelChannel];
+ (void) GetOneVirtualPixelInfo(image,UndefinedVirtualPixelMethod,
+ geometry.x,geometry.y,&target,exception);
if (attribute_flag[4] != 0)
QueryColorCompliance(argument_list[4].string_reference,
AllCompliance,&target,exception);
x=0;
for ( ; (x < (ssize_t) image->columns) && (j < (ssize_t) depth); x++)
{
- Quantum
- virtual_pixel[MaxPixelChannels];
-
if ((k/(ssize_t) watermark->columns) >= (ssize_t) watermark->rows)
break;
- (void) GetOneVirtualPixel(watermark,k % (ssize_t) watermark->columns,
- k/(ssize_t) watermark->columns,virtual_pixel,exception);
- pixel.red=virtual_pixel[RedPixelChannel];
- pixel.green=virtual_pixel[GreenPixelChannel];
- pixel.blue=virtual_pixel[BluePixelChannel];
- pixel.alpha=virtual_pixel[AlphaPixelChannel];
+ (void) GetOneVirtualPixelInfo(watermark,UndefinedVirtualPixelMethod,
+ k % (ssize_t) watermark->columns,k/(ssize_t) watermark->columns,
+ &pixel,exception);
q=GetAuthenticPixels(image,x,y,1,1,exception);
if (q == (Quantum *) NULL)
break;