q+=GetPixelChannels(image);
continue;
}
- (void) GetFillColor(draw_info,x_offset,y_offset,&fill_color);
+ (void) GetFillColor(draw_info,x_offset,y_offset,&fill_color,
+ exception);
fill_opacity=fill_opacity*fill_color.alpha;
CompositePixelOver(image,&fill_color,fill_opacity,q,
GetPixelAlpha(image,q),q);
break;
for (x=0; x < (ssize_t) annotate_image->columns; x++)
{
- (void) GetFillColor(draw_info,x,y,&fill_color);
+ (void) GetFillColor(draw_info,x,y,&fill_color,exception);
SetPixelAlpha(annotate_image,ClampToQuantum((((MagickRealType)
GetPixelIntensity(annotate_image,q)*fill_color.alpha)/
QuantumRange)),q);
typedef MagickBooleanType
(*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
- PixelPacket *,ExceptionInfo *),
+ Quantum *,ExceptionInfo *),
(*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod,
- const ssize_t,const ssize_t,PixelPacket *,ExceptionInfo *),
+ const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
(*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
typedef const Quantum
%
% MagickBooleaNType GetOneCacheViewAuthenticPixel(
% const CacheView *cache_view,const ssize_t x,const ssize_t y,
-% PixelPacket *pixel,ExceptionInfo *exception)
+% Quantum *pixel,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
%
*/
MagickExport MagickBooleanType GetOneCacheViewAuthenticPixel(
- const CacheView *cache_view,const ssize_t x,const ssize_t y,
- PixelPacket *pixel,ExceptionInfo *exception)
+ const CacheView *cache_view,const ssize_t x,const ssize_t y,Quantum *pixel,
+ ExceptionInfo *exception)
{
const int
id = GetOpenMPThreadId();
Quantum
*p;
+ register ssize_t
+ i;
+
assert(cache_view != (CacheView *) NULL);
assert(cache_view->signature == MagickSignature);
- *pixel=cache_view->image->background_color;
assert(id < (int) cache_view->number_threads);
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
p=GetAuthenticPixelCacheNexus(cache_view->image,x,y,1,1,
cache_view->nexus_info[id],exception);
if (p == (const Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(cache_view->image,p,pixel);
- if (GetPixelCacheColorspace(cache_view->image->cache) == CMYKColorspace)
- pixel->black=GetPixelBlack(cache_view->image,p);
+ {
+ pixel[RedPixelChannel]=cache_view->image->background_color.red;
+ pixel[GreenPixelChannel]=cache_view->image->background_color.green;
+ pixel[BluePixelChannel]=cache_view->image->background_color.blue;
+ pixel[AlphaPixelChannel]=cache_view->image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(cache_view->image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(cache_view->image,(PixelChannel) i);
+ pixel[channel]=p[i];
+ }
return(MagickTrue);
}
\f
%
% MagickBooleanType GetOneCacheViewVirtualPixel(
% const CacheView *cache_view,const ssize_t x,const ssize_t y,
-% PixelPacket *pixel,ExceptionInfo *exception)
+% Quantum *pixel,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
%
*/
MagickExport MagickBooleanType GetOneCacheViewVirtualPixel(
- const CacheView *cache_view,const ssize_t x,const ssize_t y,
- PixelPacket *pixel,ExceptionInfo *exception)
+ const CacheView *cache_view,const ssize_t x,const ssize_t y,Quantum *pixel,
+ ExceptionInfo *exception)
{
const int
id = GetOpenMPThreadId();
const Quantum
*p;
+ register ssize_t
+ i;
+
assert(cache_view != (CacheView *) NULL);
assert(cache_view->signature == MagickSignature);
- *pixel=cache_view->image->background_color;
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);
if (p == (const Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(cache_view->image,p,pixel);
- if (GetPixelCacheColorspace(cache_view->image->cache) == CMYKColorspace)
- pixel->black=GetPixelBlack(cache_view->image,p);
+ {
+ pixel[RedPixelChannel]=cache_view->image->background_color.red;
+ pixel[GreenPixelChannel]=cache_view->image->background_color.green;
+ pixel[BluePixelChannel]=cache_view->image->background_color.blue;
+ pixel[AlphaPixelChannel]=cache_view->image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(cache_view->image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(cache_view->image,(PixelChannel) i);
+ pixel[channel]=p[i];
+ }
return(MagickTrue);
}
\f
% MagickBooleanType GetOneCacheViewVirtualMethodPixel(
% const CacheView *cache_view,
% const VirtualPixelMethod virtual_pixel_method,const ssize_t x,
-% const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+% const ssize_t y,Quantum *pixel,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
*/
MagickExport MagickBooleanType GetOneCacheViewVirtualMethodPixel(
const CacheView *cache_view,const VirtualPixelMethod virtual_pixel_method,
- const ssize_t x,const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+ const ssize_t x,const ssize_t y,Quantum *pixel,ExceptionInfo *exception)
{
const int
id = GetOpenMPThreadId();
const Quantum
*p;
+ register ssize_t
+ i;
+
assert(cache_view != (CacheView *) NULL);
assert(cache_view->signature == MagickSignature);
- *pixel=cache_view->image->background_color;
assert(id < (int) cache_view->number_threads);
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
p=GetVirtualPixelsFromNexus(cache_view->image,virtual_pixel_method,x,y,1,1,
cache_view->nexus_info[id],exception);
if (p == (const Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(cache_view->image,p,pixel);
- if (GetPixelCacheColorspace(cache_view->image->cache) == CMYKColorspace)
- pixel->black=GetPixelBlack(cache_view->image,p);
+ {
+ pixel[RedPixelChannel]=cache_view->image->background_color.red;
+ pixel[GreenPixelChannel]=cache_view->image->background_color.green;
+ pixel[BluePixelChannel]=cache_view->image->background_color.blue;
+ pixel[AlphaPixelChannel]=cache_view->image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(cache_view->image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(cache_view->image,(PixelChannel) i);
+ pixel[channel]=p[i];
+ }
return(MagickTrue);
}
\f
extern MagickExport MagickBooleanType
GetOneCacheViewVirtualPixel(const CacheView *,const ssize_t,const ssize_t,
- PixelPacket *,ExceptionInfo *),
- GetOneCacheViewVirtualMethodPixel(const CacheView *,
- const VirtualPixelMethod,const ssize_t,const ssize_t,PixelPacket *,
- ExceptionInfo *),
+ Quantum *,ExceptionInfo *),
+ GetOneCacheViewVirtualMethodPixel(const CacheView *,const VirtualPixelMethod,
+ const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
GetOneCacheViewAuthenticPixel(const CacheView *,const ssize_t,const ssize_t,
- PixelPacket *,ExceptionInfo *),
+ Quantum *,ExceptionInfo *),
SetCacheViewStorageClass(CacheView *,const ClassType),
SetCacheViewVirtualPixelMethod(CacheView *,const VirtualPixelMethod),
SyncCacheViewAuthenticPixels(CacheView *,ExceptionInfo *);
static MagickBooleanType
GetOneAuthenticPixelFromCache(Image *,const ssize_t,const ssize_t,
- PixelPacket *,ExceptionInfo *),
+ Quantum *,ExceptionInfo *),
GetOneVirtualPixelFromCache(const Image *,const VirtualPixelMethod,
- const ssize_t,const ssize_t,PixelPacket *,ExceptionInfo *),
+ const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
OpenPixelCache(Image *,const MapMode,ExceptionInfo *),
ReadPixelCacheMetacontent(CacheInfo *,NexusInfo *,ExceptionInfo *),
ReadPixelCachePixels(CacheInfo *,NexusInfo *,ExceptionInfo *),
% The format of the GetOneAuthenticPixel() method is:
%
% MagickBooleanType GetOneAuthenticPixel(const Image image,const ssize_t x,
-% const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+% const ssize_t y,Quantum *pixel,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
%
*/
MagickExport MagickBooleanType GetOneAuthenticPixel(Image *image,
- const ssize_t x,const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+ const ssize_t x,const ssize_t y,Quantum *pixel,ExceptionInfo *exception)
{
CacheInfo
*cache_info;
register Quantum
*q;
+ register ssize_t
+ i;
+
assert(image != (Image *) NULL);
assert(image->signature == MagickSignature);
assert(image->cache != (Cache) NULL);
cache_info=(CacheInfo *) image->cache;
assert(cache_info->signature == MagickSignature);
- *pixel=image->background_color;
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
if (cache_info->methods.get_one_authentic_pixel_from_handler !=
(GetOneAuthenticPixelFromHandler) NULL)
return(cache_info->methods.get_one_authentic_pixel_from_handler(image,x,y,
pixel,exception));
q=GetAuthenticPixelsCache(image,x,y,1UL,1UL,exception);
if (q == (Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(image,q,pixel);
+ {
+ pixel[RedPixelChannel]=image->background_color.red;
+ pixel[GreenPixelChannel]=image->background_color.green;
+ pixel[BluePixelChannel]=image->background_color.blue;
+ pixel[AlphaPixelChannel]=image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ pixel[channel]=q[i];
+ }
return(MagickTrue);
}
\f
% The format of the GetOneAuthenticPixelFromCache() method is:
%
% MagickBooleanType GetOneAuthenticPixelFromCache(const Image image,
-% const ssize_t x,const ssize_t y,PixelPacket *pixel,
+% const ssize_t x,const ssize_t y,Quantum *pixel,
% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
*/
static MagickBooleanType GetOneAuthenticPixelFromCache(Image *image,
- const ssize_t x,const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+ const ssize_t x,const ssize_t y,Quantum *pixel,ExceptionInfo *exception)
{
CacheInfo
*cache_info;
register Quantum
*q;
+ register ssize_t
+ i;
+
assert(image != (const Image *) NULL);
assert(image->signature == MagickSignature);
assert(image->cache != (Cache) NULL);
cache_info=(CacheInfo *) image->cache;
assert(cache_info->signature == MagickSignature);
assert(id < (int) cache_info->number_threads);
- *pixel=image->background_color;
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
q=GetAuthenticPixelCacheNexus(image,x,y,1UL,1UL,cache_info->nexus_info[id],
exception);
if (q == (Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(image,q,pixel);
+ {
+ pixel[RedPixelChannel]=image->background_color.red;
+ pixel[GreenPixelChannel]=image->background_color.green;
+ pixel[BluePixelChannel]=image->background_color.blue;
+ pixel[AlphaPixelChannel]=image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ pixel[channel]=q[i];
+ }
return(MagickTrue);
}
\f
%
% MagickBooleanType GetOneVirtualMethodPixel(const Image image,
% const VirtualPixelMethod virtual_pixel_method,const ssize_t x,
-% const ssize_t y,PixelPacket *pixel,ExceptionInfo exception)
+% const ssize_t y,Quantum *pixel,ExceptionInfo exception)
%
% A description of each parameter follows:
%
*/
MagickExport MagickBooleanType GetOneVirtualMethodPixel(const Image *image,
const VirtualPixelMethod virtual_pixel_method,const ssize_t x,const ssize_t y,
- PixelPacket *pixel,ExceptionInfo *exception)
+ Quantum *pixel,ExceptionInfo *exception)
{
CacheInfo
*cache_info;
const Quantum
*p;
+ register ssize_t
+ i;
+
assert(image != (const Image *) NULL);
assert(image->signature == MagickSignature);
assert(image->cache != (Cache) NULL);
cache_info=(CacheInfo *) image->cache;
assert(cache_info->signature == MagickSignature);
- *pixel=image->background_color;
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
if (cache_info->methods.get_one_virtual_pixel_from_handler !=
(GetOneVirtualPixelFromHandler) NULL)
return(cache_info->methods.get_one_virtual_pixel_from_handler(image,
p=GetVirtualPixelsFromNexus(image,virtual_pixel_method,x,y,1UL,1UL,
cache_info->nexus_info[id],exception);
if (p == (const Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(image,p,pixel);
- if (image->colorspace == CMYKColorspace)
- pixel->black=GetPixelBlack(image,p);
+ {
+ pixel[RedPixelChannel]=image->background_color.red;
+ pixel[GreenPixelChannel]=image->background_color.green;
+ pixel[BluePixelChannel]=image->background_color.blue;
+ pixel[AlphaPixelChannel]=image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ pixel[channel]=p[i];
+ }
return(MagickTrue);
}
\f
% The format of the GetOneVirtualPixel() method is:
%
% MagickBooleanType GetOneVirtualPixel(const Image image,const ssize_t x,
-% const ssize_t y,PixelPacket *pixel,ExceptionInfo exception)
+% const ssize_t y,Quantum *pixel,ExceptionInfo exception)
%
% A description of each parameter follows:
%
%
*/
MagickExport MagickBooleanType GetOneVirtualPixel(const Image *image,
- const ssize_t x,const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+ const ssize_t x,const ssize_t y,Quantum *pixel,ExceptionInfo *exception)
{
CacheInfo
*cache_info;
const Quantum
*p;
+ register ssize_t
+ i;
+
assert(image != (const Image *) NULL);
assert(image->signature == MagickSignature);
assert(image->cache != (Cache) NULL);
cache_info=(CacheInfo *) image->cache;
assert(cache_info->signature == MagickSignature);
- *pixel=image->background_color;
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
if (cache_info->methods.get_one_virtual_pixel_from_handler !=
(GetOneVirtualPixelFromHandler) NULL)
return(cache_info->methods.get_one_virtual_pixel_from_handler(image,
p=GetVirtualPixelsFromNexus(image,GetPixelCacheVirtualMethod(image),x,y,
1UL,1UL,cache_info->nexus_info[id],exception);
if (p == (const Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(image,p,pixel);
- if (image->colorspace == CMYKColorspace)
- pixel->black=GetPixelBlack(image,p);
+ {
+ pixel[RedPixelChannel]=image->background_color.red;
+ pixel[GreenPixelChannel]=image->background_color.green;
+ pixel[BluePixelChannel]=image->background_color.blue;
+ pixel[AlphaPixelChannel]=image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ pixel[channel]=p[i];
+ }
return(MagickTrue);
}
\f
%
% MagickBooleanType GetOneVirtualPixelFromCache(const Image image,
% const VirtualPixelMethod method,const ssize_t x,const ssize_t y,
-% PixelPacket *pixel,ExceptionInfo *exception)
+% Quantum *pixel,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
*/
static MagickBooleanType GetOneVirtualPixelFromCache(const Image *image,
const VirtualPixelMethod virtual_pixel_method,const ssize_t x,const ssize_t y,
- PixelPacket *pixel,ExceptionInfo *exception)
+ Quantum *pixel,ExceptionInfo *exception)
{
CacheInfo
*cache_info;
const Quantum
*p;
+ register ssize_t
+ i;
+
assert(image != (const Image *) NULL);
assert(image->signature == MagickSignature);
assert(image->cache != (Cache) NULL);
cache_info=(CacheInfo *) image->cache;
assert(cache_info->signature == MagickSignature);
assert(id < (int) cache_info->number_threads);
- *pixel=image->background_color;
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
p=GetVirtualPixelsFromNexus(image,virtual_pixel_method,x,y,1UL,1UL,
cache_info->nexus_info[id],exception);
if (p == (const Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(image,p,pixel);
- if (image->colorspace == CMYKColorspace)
- pixel->black=GetPixelBlack(image,p);
+ {
+ pixel[RedPixelChannel]=image->background_color.red;
+ pixel[GreenPixelChannel]=image->background_color.green;
+ pixel[BluePixelChannel]=image->background_color.blue;
+ pixel[AlphaPixelChannel]=image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ pixel[channel]=p[i];
+ }
return(MagickTrue);
}
\f
extern MagickExport MagickBooleanType
GetOneVirtualMagickPixel(const Image *,const ssize_t,const ssize_t,
PixelInfo *,ExceptionInfo *),
- GetOneVirtualPixel(const Image *,const ssize_t,const ssize_t,PixelPacket *,
+ GetOneVirtualPixel(const Image *,const ssize_t,const ssize_t,Quantum *,
ExceptionInfo *),
GetOneVirtualMethodPixel(const Image *,const VirtualPixelMethod,const ssize_t,
- const ssize_t,PixelPacket *,ExceptionInfo *),
- GetOneAuthenticPixel(Image *,const ssize_t,const ssize_t,PixelPacket *,
+ const ssize_t,Quantum *,ExceptionInfo *),
+ GetOneAuthenticPixel(Image *,const ssize_t,const ssize_t,Quantum *,
ExceptionInfo *),
PersistPixelCache(Image *,const char *,const MagickBooleanType,
MagickOffsetType *,ExceptionInfo *),
pixel,
target;
+ Quantum
+ virtual_pixel[MaxPixelChannels];
+
/*
Update color information using replace algorithm.
*/
(void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) x_offset,
- (ssize_t) y_offset,&target,exception);
+ (ssize_t) y_offset,virtual_pixel,exception);
+ target.red=virtual_pixel[RedPixelChannel];
+ target.green=virtual_pixel[GreenPixelChannel];
+ target.blue=virtual_pixel[BluePixelChannel];
+ target.alpha=virtual_pixel[AlphaPixelChannel];
if ((*image)->storage_class == DirectClass)
{
for (y=0; y < (int) (*image)->rows; y++)
pixel,
target;
+ Quantum
+ virtual_pixel[MaxPixelChannels];
+
/*
Update matte information using replace algorithm.
*/
(void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) x_offset,
- (ssize_t) y_offset,&target,exception);
+ (ssize_t) y_offset,virtual_pixel,exception);
+ target.red=virtual_pixel[RedPixelChannel];
+ target.green=virtual_pixel[GreenPixelChannel];
+ target.blue=virtual_pixel[BluePixelChannel];
+ target.alpha=virtual_pixel[AlphaPixelChannel];
for (y=0; y < (int) (*image)->rows; y++)
{
q=GetCacheViewAuthenticPixels(image_view,0,(ssize_t) y,
PixelPacket
pixel;
+ Quantum
+ virtual_pixel[MaxPixelChannels];
+
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,&pixel,exception);
+ (void) GetOneCacheViewVirtualPixel(image_view,0,0,virtual_pixel,
+ exception);
+ pixel.red=virtual_pixel[RedPixelChannel];
+ pixel.green=virtual_pixel[GreenPixelChannel];
+ pixel.blue=virtual_pixel[BluePixelChannel];
+ pixel.alpha=virtual_pixel[AlphaPixelChannel];
for (i=0; i < (int) height; i++)
{
s=GetCacheViewAuthenticPixels(image_view,(ssize_t) x_offset,(ssize_t)
#include "MagickCore/memory_.h"
static inline MagickBooleanType GetFillColor(const DrawInfo *draw_info,
- const ssize_t x,const ssize_t y,PixelPacket *pixel)
+ const ssize_t x,const ssize_t y,PixelPacket *fill,ExceptionInfo *exception)
{
- Image
- *pattern;
-
- MagickBooleanType
- status;
-
- pattern=draw_info->fill_pattern;
- if (pattern == (Image *) NULL)
+ if (draw_info->fill_pattern == (Image *) NULL)
{
- *pixel=draw_info->fill;
+ *fill=draw_info->fill;
return(MagickTrue);
}
+ {
+ Image
+ *pattern;
+
+ MagickBooleanType
+ status;
+
+ Quantum
+ pixel[MaxPixelChannels];
+
+ pattern=draw_info->fill_pattern;
#if defined(MAGICKCORE_OPENMP_SUPPORT) && (_OPENMP >= 200203)
- #pragma omp critical
+ #pragma omp critical
#endif
- status=GetOneVirtualMethodPixel(pattern,TileVirtualPixelMethod,
- x+pattern->tile_offset.x,y+pattern->tile_offset.y,pixel,
- &pattern->exception);
- if (pattern->matte == MagickFalse)
- pixel->alpha=OpaqueAlpha;
- return(status);
+ status=GetOneVirtualMethodPixel(pattern,TileVirtualPixelMethod,x+
+ pattern->tile_offset.x,y+pattern->tile_offset.y,pixel,exception);
+ fill->red=pixel[RedPixelChannel];
+ fill->green=pixel[GreenPixelChannel];
+ fill->blue=pixel[BluePixelChannel];
+ fill->alpha=pixel[AlphaPixelChannel];
+ return(status);
+ }
}
static inline MagickBooleanType GetStrokeColor(const DrawInfo *draw_info,
- const ssize_t x,const ssize_t y,PixelPacket *pixel)
+ const ssize_t x,const ssize_t y,PixelPacket *stroke,ExceptionInfo *exception)
{
- Image
- *pattern;
-
- MagickBooleanType
- status;
-
- pattern=draw_info->stroke_pattern;
- if (pattern == (Image *) NULL)
+ if (draw_info->stroke_pattern == (Image *) NULL)
{
- *pixel=draw_info->stroke;
+ *stroke=draw_info->stroke;
return(MagickTrue);
}
+ {
+ Image
+ *pattern;
+
+ MagickBooleanType
+ status;
+
+ Quantum
+ pixel[MaxPixelChannels];
+
+ pattern=draw_info->stroke_pattern;
#if defined(MAGICKCORE_OPENMP_SUPPORT) && (_OPENMP >= 200203)
#pragma omp critical
#endif
- status=GetOneVirtualMethodPixel(pattern,TileVirtualPixelMethod,
- x+pattern->tile_offset.x,y+pattern->tile_offset.y,pixel,
- &pattern->exception);
- if (pattern->matte == MagickFalse)
- pixel->alpha=OpaqueAlpha;
- return(status);
+ status=GetOneVirtualMethodPixel(pattern,TileVirtualPixelMethod,x+
+ pattern->tile_offset.x,y+pattern->tile_offset.y,pixel,exception);
+ stroke->red=pixel[RedPixelChannel];
+ stroke->green=pixel[GreenPixelChannel];
+ stroke->blue=pixel[BluePixelChannel];
+ stroke->alpha=pixel[AlphaPixelChannel];
+ return(status);
+ }
}
#if defined(__cplusplus) || defined(c_plusplus)
if ((x == (ssize_t) ceil(primitive_info->point.x-0.5)) &&
(y == (ssize_t) ceil(primitive_info->point.y-0.5)))
{
- (void) GetStrokeColor(draw_info,x,y,&pixel);
+ (void) GetStrokeColor(draw_info,x,y,&pixel,exception);
SetPixelPacket(image,&pixel,q);
}
q+=GetPixelChannels(image);
fill_opacity=fill_opacity > 0.25 ? 1.0 : 0.0;
stroke_opacity=stroke_opacity > 0.25 ? 1.0 : 0.0;
}
- (void) GetFillColor(draw_info,x,y,&fill_color);
+ (void) GetFillColor(draw_info,x,y,&fill_color,exception);
fill_opacity=fill_opacity*fill_color.alpha;
CompositePixelOver(image,&fill_color,fill_opacity,q,(MagickRealType)
GetPixelAlpha(image,q),q);
- (void) GetStrokeColor(draw_info,x,y,&stroke_color);
+ (void) GetStrokeColor(draw_info,x,y,&stroke_color,exception);
stroke_opacity=stroke_opacity*stroke_color.alpha;
CompositePixelOver(image,&stroke_color,stroke_opacity,q,(MagickRealType)
GetPixelAlpha(image,q),q);
q=GetCacheViewAuthenticPixels(image_view,x,y,1,1,exception);
if (q == (Quantum *) NULL)
break;
- (void) GetFillColor(draw_info,x,y,&fill_color);
+ (void) GetFillColor(draw_info,x,y,&fill_color,exception);
CompositePixelOver(image,&fill_color,(MagickRealType) fill_color.alpha,q,
(MagickRealType) GetPixelAlpha(image,q),q);
(void) SyncCacheViewAuthenticPixels(image_view,exception);
q=GetCacheViewAuthenticPixels(image_view,x,y,1,1,exception);
if (q == (Quantum *) NULL)
break;
- (void) GetFillColor(draw_info,x,y,&pixel);
+ (void) GetFillColor(draw_info,x,y,&pixel,exception);
SetPixelPacket(image,&pixel,q);
(void) SyncCacheViewAuthenticPixels(image_view,exception);
break;
pixel,
target;
- (void) GetOneCacheViewVirtualPixel(image_view,x,y,&target,exception);
+ Quantum
+ virtual_pixel[MaxPixelChannels];
+
+ (void) GetOneCacheViewVirtualPixel(image_view,x,y,virtual_pixel,
+ exception);
+ target.red=virtual_pixel[RedPixelChannel];
+ target.green=virtual_pixel[GreenPixelChannel];
+ target.blue=virtual_pixel[BluePixelChannel];
+ target.alpha=virtual_pixel[AlphaPixelChannel];
for (y=0; y < (ssize_t) image->rows; y++)
{
register Quantum
q+=GetPixelChannels(image);
continue;
}
- (void) GetFillColor(draw_info,x,y,&pixel);
+ (void) GetFillColor(draw_info,x,y,&pixel,exception);
SetPixelPacket(image,&pixel,q);
q+=GetPixelChannels(image);
}
break;
for (x=0; x < (ssize_t) image->columns; x++)
{
- (void) GetFillColor(draw_info,x,y,&pixel);
+ (void) GetFillColor(draw_info,x,y,&pixel,exception);
SetPixelPacket(image,&pixel,q);
q+=GetPixelChannels(image);
}
q=GetCacheViewAuthenticPixels(image_view,x,y,1,1,exception);
if (q == (Quantum *) NULL)
break;
- (void) GetFillColor(draw_info,x,y,&pixel);
+ (void) GetFillColor(draw_info,x,y,&pixel,exception);
SetPixelAlpha(image,pixel.alpha,q);
(void) SyncCacheViewAuthenticPixels(image_view,exception);
break;
pixel,
target;
- (void) GetOneCacheViewVirtualPixel(image_view,x,y,&target,exception);
+ Quantum
+ virtual_pixel[MaxPixelChannels];
+
+ (void) GetOneCacheViewVirtualPixel(image_view,x,y,virtual_pixel,
+ exception);
+ target.red=virtual_pixel[RedPixelChannel];
+ target.green=virtual_pixel[GreenPixelChannel];
+ target.blue=virtual_pixel[BluePixelChannel];
+ target.alpha=virtual_pixel[AlphaPixelChannel];
for (y=0; y < (ssize_t) image->rows; y++)
{
register Quantum
q+=GetPixelChannels(image);
continue;
}
- (void) GetFillColor(draw_info,x,y,&pixel);
+ (void) GetFillColor(draw_info,x,y,&pixel,exception);
SetPixelAlpha(image,pixel.alpha,q);
q+=GetPixelChannels(image);
}
break;
for (x=0; x < (ssize_t) image->columns; x++)
{
- (void) GetFillColor(draw_info,x,y,&pixel);
+ (void) GetFillColor(draw_info,x,y,&pixel,exception);
SetPixelAlpha(image,pixel.alpha,q);
q+=GetPixelChannels(image);
}
Push initial segment on stack.
*/
status=MagickTrue;
+ fill_color.black=0.0;
+ fill_color.index=0.0;
x=x_offset;
y=y_offset;
start=0;
{
if (GetPixelAlpha(floodplane_image,p) != OpaqueAlpha)
{
- (void) GetFillColor(draw_info,x,y,&fill_color);
+ (void) GetFillColor(draw_info,x,y,&fill_color,exception);
SetPixelInfoPacket(image,&fill_color,&fill);
if (image->colorspace == CMYKColorspace)
ConvertRGBToCMYK(&fill);
% The format of the GetOneAuthenticPixelFromStream() method is:
%
% MagickBooleanType GetOneAuthenticPixelFromStream(const Image image,
-% const ssize_t x,const ssize_t y,PixelPacket *pixel,
+% const ssize_t x,const ssize_t y,Quantum *pixel,
% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
*/
static MagickBooleanType GetOneAuthenticPixelFromStream(Image *image,
- const ssize_t x,const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+ const ssize_t x,const ssize_t y,Quantum *pixel,ExceptionInfo *exception)
{
register Quantum
*q;
+ register ssize_t
+ i;
+
assert(image != (Image *) NULL);
assert(image->signature == MagickSignature);
- *pixel=image->background_color;
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
q=GetAuthenticPixelsStream(image,x,y,1,1,exception);
if (q != (Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(image,q,pixel);
+ {
+ pixel[RedPixelChannel]=image->background_color.red;
+ pixel[GreenPixelChannel]=image->background_color.green;
+ pixel[BluePixelChannel]=image->background_color.blue;
+ pixel[AlphaPixelChannel]=image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ pixel[channel]=q[i];
+ }
return(MagickTrue);
}
\f
%
% MagickBooleanType GetOneVirtualPixelFromStream(const Image image,
% const VirtualPixelMethod virtual_pixel_method,const ssize_t x,
-% const ssize_t y,PixelPacket *pixel,ExceptionInfo *exception)
+% const ssize_t y,Quantum *pixel,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
*/
static MagickBooleanType GetOneVirtualPixelFromStream(const Image *image,
const VirtualPixelMethod virtual_pixel_method,const ssize_t x,const ssize_t y,
- PixelPacket *pixel,ExceptionInfo *exception)
+ Quantum *pixel,ExceptionInfo *exception)
{
const Quantum
*p;
+ register ssize_t
+ i;
+
assert(image != (Image *) NULL);
assert(image->signature == MagickSignature);
- *pixel=image->background_color;
+ (void) memset(pixel,0,MaxPixelChannels*sizeof(*pixel));
p=GetVirtualPixelStream(image,virtual_pixel_method,x,y,1,1,exception);
if (p == (const Quantum *) NULL)
- return(MagickFalse);
- GetPixelPacketPixel(image,p,pixel);
- if (image->colorspace == CMYKColorspace)
- pixel->black=GetPixelBlack(image,p);
+ {
+ pixel[RedPixelChannel]=image->background_color.red;
+ pixel[GreenPixelChannel]=image->background_color.green;
+ pixel[BluePixelChannel]=image->background_color.blue;
+ pixel[AlphaPixelChannel]=image->background_color.alpha;
+ return(MagickFalse);
+ }
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ pixel[channel]=p[i];
+ }
return(MagickTrue);
}
\f
#define MagickLibAddendum "-0"
#define MagickLibInterface 7
#define MagickLibMinInterface 7
-#define MagickReleaseDate "2011-10-01"
+#define MagickReleaseDate "2011-10-02"
#define MagickChangeDate "20110801"
#define MagickAuthoritativeURL "http://www.imagemagick.org"
#if defined(MAGICKCORE_OPENMP_SUPPORT)
Pixmap
annotate_pixmap;
+ Quantum
+ virtual_pixel[MaxPixelChannels];
+
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,
- &annotate_image->background_color,&image->exception);
+ (void) GetOneVirtualPixel(image,(ssize_t) x,(ssize_t) y,virtual_pixel,
+ &image->exception);
+ annotate_image->background_color.red=virtual_pixel[RedPixelChannel];
+ annotate_image->background_color.green=virtual_pixel[GreenPixelChannel];
+ annotate_image->background_color.blue=virtual_pixel[BluePixelChannel];
+ annotate_image->background_color.alpha=virtual_pixel[AlphaPixelChannel];
if (annotate_info->stencil == ForegroundStencil)
annotate_image->matte=MagickTrue;
exception=(&image->exception);
MagickBooleanType
matte;
+ Quantum
+ virtual_pixel[MaxPixelChannels];
+
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,
- &draw_image->background_color,&image->exception);
+ (void) GetOneVirtualPixel(image,(ssize_t) x,(ssize_t) y,virtual_pixel,
+ &image->exception);
+ draw_image->background_color.red=virtual_pixel[RedPixelChannel];
+ draw_image->background_color.green=virtual_pixel[GreenPixelChannel];
+ draw_image->background_color.blue=virtual_pixel[BluePixelChannel];
+ draw_image->background_color.alpha=virtual_pixel[AlphaPixelChannel];
if (SetImageStorageClass(draw_image,DirectClass,&image->exception) == MagickFalse)
return(MagickFalse);
draw_image->matte=MagickTrue;
*composite_image,
*rotate_image;
- PixelPacket
- target;
-
/*
Composite image.
*/
{
if (LocaleCompare(keyword,"compose") == 0)
{
- option=ParseCommandOption(MagickComposeOptions,MagickFalse,
- value);
+ option=ParseCommandOption(MagickComposeOptions,
+ MagickFalse,value);
if (option < 0)
ThrowMSLException(OptionError,"UnrecognizedComposeType",
value);
&geometry,&exception);
if ((flags & HeightValue) == 0)
geometry.height=geometry.width;
- (void) GetOneVirtualPixel(msl_info->image[n],geometry.x,
- geometry.y,&target,&exception);
break;
}
if (LocaleCompare(keyword,"gravity") == 0)
{
- option=ParseCommandOption(MagickGravityOptions,MagickFalse,
- value);
+ option=ParseCommandOption(MagickGravityOptions,
+ MagickFalse,value);
if (option < 0)
ThrowMSLException(OptionError,"UnrecognizedGravityType",
value);
if (LocaleCompare(keyword,"x") == 0)
{
geometry.x=StringToLong(value);
- (void) GetOneVirtualPixel(msl_info->image[n],geometry.x,
- geometry.y,&target,&exception);
break;
}
ThrowMSLException(OptionError,"UnrecognizedAttribute",
if (LocaleCompare(keyword,"y") == 0)
{
geometry.y=StringToLong(value);
- (void) GetOneVirtualPixel(msl_info->image[n],geometry.x,
- geometry.y,&target,&exception);
break;
}
ThrowMSLException(OptionError,"UnrecognizedAttribute",
*/
geometry.x-=(ssize_t) (rotate_image->columns-
composite_image->columns)/2;
- geometry.y-=(ssize_t) (rotate_image->rows-composite_image->rows)/2;
+ geometry.y-=(ssize_t) (rotate_image->rows-
+ composite_image->rows)/2;
CompositeImage(image,compose,rotate_image,geometry.x,geometry.y);
rotate_image=DestroyImage(rotate_image);
}
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,&pixel,exception);
+ 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];
q=GetAuthenticPixels(image,x,y,1,1,exception);
if (q == (Quantum *) NULL)
break;