width=tile_width;
if ((tile_x+(ssize_t) tile_width) > (ssize_t) image->columns)
- width=(size_t) (tile_width-(tile_x+tile_width-
- image->columns));
+ width=(size_t) (tile_width-(tile_x+tile_width-image->columns));
height=tile_height;
if ((tile_y+(ssize_t) tile_height) > (ssize_t) image->rows)
- height=(size_t) (tile_height-(tile_y+tile_height-
- image->rows));
+ height=(size_t) (tile_height-(tile_y+tile_height-image->rows));
p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,width,height,
exception);
if (p == (const Quantum *) NULL)
tile_pixels=p+((height-1)*width+y)*GetPixelChannels(image);
for (x=0; x < (ssize_t) height; x++)
{
- SetPixelRed(rotate_image,GetPixelRed(image,tile_pixels),q);
- SetPixelGreen(rotate_image,GetPixelGreen(image,tile_pixels),q);
- SetPixelBlue(rotate_image,GetPixelBlue(image,tile_pixels),q);
- SetPixelAlpha(rotate_image,GetPixelAlpha(image,tile_pixels),q);
+ register ssize_t
+ i;
+
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ PixelTrait
+ rotate_traits,
+ traits;
+
+ traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
+ if (traits == UndefinedPixelTrait)
+ continue;
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ rotate_traits=GetPixelChannelMapTraits(rotate_image,channel);
+ if (rotate_traits == UndefinedPixelTrait)
+ continue;
+ if ((rotate_traits & CopyPixelTrait) != 0)
+ {
+ q[channel]=tile_pixels[i];
+ continue;
+ }
+ q[channel]=tile_pixels[i];
+ }
tile_pixels-=width*GetPixelChannels(image);
q+=GetPixelChannels(rotate_image);
}
if (status == MagickFalse)
continue;
- p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,
- exception);
- q=QueueCacheViewAuthenticPixels(rotate_view,0,(ssize_t) (image->rows-
- y-1),image->columns,1,exception);
+ p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
+ q=QueueCacheViewAuthenticPixels(rotate_view,0,(ssize_t) (image->rows-y-
+ 1),image->columns,1,exception);
if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL))
{
status=MagickFalse;
q+=GetPixelChannels(rotate_image)*image->columns;
for (x=0; x < (ssize_t) image->columns; x++)
{
+ register ssize_t
+ i;
+
q-=GetPixelChannels(rotate_image);
- SetPixelRed(rotate_image,GetPixelRed(image,p),q);
- SetPixelGreen(rotate_image,GetPixelGreen(image,p),q);
- SetPixelBlue(rotate_image,GetPixelBlue(image,p),q);
- SetPixelAlpha(rotate_image,GetPixelAlpha(image,p),q);
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ PixelTrait
+ rotate_traits,
+ traits;
+
+ traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
+ if (traits == UndefinedPixelTrait)
+ continue;
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ rotate_traits=GetPixelChannelMapTraits(rotate_image,channel);
+ if (rotate_traits == UndefinedPixelTrait)
+ continue;
+ if ((rotate_traits & CopyPixelTrait) != 0)
+ {
+ q[channel]=p[i];
+ continue;
+ }
+ q[channel]=p[i];
+ }
p+=GetPixelChannels(image);
}
sync=SyncCacheViewAuthenticPixels(rotate_view,exception);
width=tile_width;
if ((tile_x+(ssize_t) tile_width) > (ssize_t) image->columns)
- width=(size_t) (tile_width-(tile_x+tile_width-
- image->columns));
+ width=(size_t) (tile_width-(tile_x+tile_width-image->columns));
height=tile_height;
if ((tile_y+(ssize_t) tile_height) > (ssize_t) image->rows)
- height=(size_t) (tile_height-(tile_y+tile_height-
- image->rows));
- p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,width,
- height,exception);
+ height=(size_t) (tile_height-(tile_y+tile_height-image->rows));
+ p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,width,height,
+ exception);
if (p == (const Quantum *) NULL)
{
status=MagickFalse;
register ssize_t
x;
- q=QueueCacheViewAuthenticPixels(rotate_view,tile_y,(ssize_t)
- (y+rotate_image->rows-(tile_x+width)),height,1,exception);
+ q=QueueCacheViewAuthenticPixels(rotate_view,tile_y,(ssize_t) (y+
+ rotate_image->rows-(tile_x+width)),height,1,exception);
if (q == (const Quantum *) NULL)
{
status=MagickFalse;
tile_pixels=p+((width-1)-y)*GetPixelChannels(image);
for (x=0; x < (ssize_t) height; x++)
{
- SetPixelRed(rotate_image,GetPixelRed(image,tile_pixels),q);
- SetPixelGreen(rotate_image,GetPixelGreen(image,tile_pixels),q);
- SetPixelBlue(rotate_image,GetPixelBlue(image,tile_pixels),q);
- SetPixelAlpha(rotate_image,GetPixelAlpha(image,tile_pixels),q);
+ register ssize_t
+ i;
+
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelChannel
+ channel;
+
+ PixelTrait
+ rotate_traits,
+ traits;
+
+ traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
+ if (traits == UndefinedPixelTrait)
+ continue;
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ rotate_traits=GetPixelChannelMapTraits(rotate_image,channel);
+ if (rotate_traits == UndefinedPixelTrait)
+ continue;
+ if ((rotate_traits & CopyPixelTrait) != 0)
+ {
+ q[channel]=tile_pixels[i];
+ continue;
+ }
+ q[channel]=tile_pixels[i];
+ }
tile_pixels+=width*GetPixelChannels(image);
q+=GetPixelChannels(rotate_image);
}