From: cristy Date: Wed, 22 Sep 2010 14:37:58 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~8830 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b0d3bb93a8f69add9d2d000ff20e6951e3c1f885;p=imagemagick --- diff --git a/magick/fx.c b/magick/fx.c index 756ffce1c..8009e3224 100644 --- a/magick/fx.c +++ b/magick/fx.c @@ -4542,6 +4542,10 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark, | (one << (size_t) (i)) : (size_t) (alpha) & ~(one << (size_t) (i))) #define SteganoImageTag "Stegano/Image" + CacheView + *stegano_view, + *watermark_view; + Image *stegano_image; @@ -4600,17 +4604,20 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark, j=0; depth=stegano_image->depth; k=image->offset; + watermark_view=AcquireCacheView(watermark); + stegano_view=AcquireCacheView(stegano_image); for (i=(ssize_t) depth-1; (i >= 0) && (j < (ssize_t) depth); i--) { for (y=0; (y < (ssize_t) watermark->rows) && (j < (ssize_t) depth); y++) { for (x=0; (x < (ssize_t) watermark->columns) && (j < (ssize_t) depth); x++) { - (void) GetOneVirtualPixel(watermark,x,y,&pixel,exception); + (void) GetOneCacheViewVirtualPixel(watermark_view,x,y,&pixel,exception); if ((k/(ssize_t) stegano_image->columns) >= (ssize_t) stegano_image->rows) break; - q=GetAuthenticPixels(stegano_image,k % (ssize_t) stegano_image->columns, - k/(ssize_t) stegano_image->columns,1,1,exception); + q=GetCacheViewAuthenticPixels(stegano_view,k % (ssize_t) + stegano_image->columns,k/(ssize_t) stegano_image->columns,1,1, + exception); if (q == (PixelPacket *) NULL) break; switch (c) @@ -4631,7 +4638,7 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark, break; } } - if (SyncAuthenticPixels(stegano_image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(stegano_view,exception) == MagickFalse) break; c++; if (c == 3) @@ -4654,6 +4661,8 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark, status=MagickFalse; } } + stegano_view=DestroyCacheView(stegano_view); + watermark_view=DestroyCacheView(watermark_view); if (stegano_image->storage_class == PseudoClass) (void) SyncImage(stegano_image); return(stegano_image); diff --git a/magick/paint.c b/magick/paint.c index 6de39fbdd..a0c4a81d6 100644 --- a/magick/paint.c +++ b/magick/paint.c @@ -125,6 +125,10 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, } \ } + CacheView + *floodplane_view, + *image_view; + ExceptionInfo *exception; @@ -199,6 +203,8 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, PushSegmentStack(y+1,x,x,-1); GetMagickPixelPacket(image,&fill); GetMagickPixelPacket(image,&pixel); + image_view=AcquireCacheView(image); + floodplane_view=AcquireCacheView(floodplane_image); while (s > segment_stack) { register const IndexPacket @@ -224,12 +230,12 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, /* Recolor neighboring pixels. */ - p=GetVirtualPixels(image,0,y,(size_t) (x1+1),1,exception); - q=GetAuthenticPixels(floodplane_image,0,y,(size_t) (x1+1),1, + p=GetCacheViewVirtualPixels(image_view,0,y,(size_t) (x1+1),1,exception); + q=GetCacheViewAuthenticPixels(floodplane_view,0,y,(size_t) (x1+1),1, exception); if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) break; - indexes=GetVirtualIndexQueue(image); + indexes=GetCacheViewVirtualIndexQueue(image_view); p+=x1; q+=x1; for (x=x1; x >= 0; x--) @@ -243,7 +249,7 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, p--; q--; } - if (SyncAuthenticPixels(floodplane_image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(floodplane_view,exception) == MagickFalse) break; skip=x >= x1 ? MagickTrue : MagickFalse; if (skip == MagickFalse) @@ -259,13 +265,14 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, { if (x < (ssize_t) image->columns) { - p=GetVirtualPixels(image,x,y,image->columns-x,1,exception); - q=GetAuthenticPixels(floodplane_image,x,y,image->columns-x,1, + p=GetCacheViewVirtualPixels(image_view,x,y,image->columns-x,1, exception); + q=GetCacheViewAuthenticPixels(floodplane_view,x,y, + image->columns-x,1,exception); if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) break; - indexes=GetVirtualIndexQueue(image); + indexes=GetCacheViewVirtualIndexQueue(image_view); for ( ; x < (ssize_t) image->columns; x++) { if (q->opacity == (Quantum) TransparentOpacity) @@ -277,7 +284,7 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, p++; q++; } - if (SyncAuthenticPixels(floodplane_image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(floodplane_view,exception) == MagickFalse) break; } PushSegmentStack(y,start,x-1,offset); @@ -288,12 +295,13 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, x++; if (x <= x2) { - p=GetVirtualPixels(image,x,y,(size_t) (x2-x+1),1,exception); - q=GetAuthenticPixels(floodplane_image,x,y,(size_t) (x2-x+1),1, + p=GetCacheViewVirtualPixels(image_view,x,y,(size_t) (x2-x+1),1, + exception); + q=GetCacheViewAuthenticPixels(floodplane_view,x,y,(size_t) (x2-x+1),1, exception); if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) break; - indexes=GetVirtualIndexQueue(image); + indexes=GetCacheViewVirtualIndexQueue(image_view); for ( ; x <= x2; x++) { if (q->opacity == (Quantum) TransparentOpacity) @@ -325,11 +333,12 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, /* Tile fill color onto floodplane. */ - p=GetVirtualPixels(floodplane_image,0,y,image->columns,1,exception); - q=GetAuthenticPixels(image,0,y,image->columns,1,exception); + p=GetCacheViewVirtualPixels(floodplane_view,0,y,image->columns,1, + exception); + q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception); if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) break; - indexes=GetAuthenticIndexQueue(image); + indexes=GetCacheViewAuthenticIndexQueue(image); for (x=0; x < (ssize_t) image->columns; x++) { if (p->opacity != OpaqueOpacity) @@ -353,9 +362,11 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, p++; q++; } - if (SyncAuthenticPixels(image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) break; } + floodplane_view=DestroyCacheView(floodplane_view); + image_view=DestroyCacheView(image_view); segment_stack=(SegmentInfo *) RelinquishMagickMemory(segment_stack); floodplane_image=DestroyImage(floodplane_image); return(y == (ssize_t) image->rows ? MagickTrue : MagickFalse); diff --git a/wand/mogrify.c b/wand/mogrify.c index 11e75d598..efdf5db55 100644 --- a/wand/mogrify.c +++ b/wand/mogrify.c @@ -1060,8 +1060,11 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, } if (LocaleCompare("clip-mask",option+1) == 0) { + CacheView + *mask_view; + Image - *mask; + *mask_image; ssize_t y; @@ -1085,31 +1088,34 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, /* Set the image mask. */ - mask=GetImageCache(mogrify_info,argv[i+1],exception); - if (mask == (Image *) NULL) + mask_image=GetImageCache(mogrify_info,argv[i+1],exception); + if (mask_image == (Image *) NULL) break; - for (y=0; y < (ssize_t) mask->rows; y++) + if (SetImageStorageClass(mask_image,DirectClass) == MagickFalse) + return(MagickFalse); + mask_view=AcquireCacheView(mask_image); + for (y=0; y < (ssize_t) mask_image->rows; y++) { - q=GetAuthenticPixels(mask,0,y,mask->columns,1,exception); + q=GetCacheViewAuthenticPixels(mask_view,0,y,mask_image->columns,1, + exception); if (q == (PixelPacket *) NULL) break; - for (x=0; x < (ssize_t) mask->columns; x++) + for (x=0; x < (ssize_t) mask_image->columns; x++) { - if (mask->matte == MagickFalse) + if (mask_image->matte == MagickFalse) q->opacity=PixelIntensityToQuantum(q); q->red=q->opacity; q->green=q->opacity; q->blue=q->opacity; q++; } - if (SyncAuthenticPixels(mask,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(mask_view,exception) == MagickFalse) break; } - if (SetImageStorageClass(mask,DirectClass) == MagickFalse) - return(MagickFalse); - mask->matte=MagickTrue; - (void) SetImageClipMask(*image,mask); - mask=DestroyImage(mask); + mask_view=DestroyCacheView(mask_view); + mask_image->matte=MagickTrue; + (void) SetImageClipMask(*image,mask_image); + mask_image=DestroyImage(mask_image); InheritException(exception,&(*image)->exception); break; }