From: cristy Date: Wed, 22 Sep 2010 14:23:02 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~8831 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c5c6f66d8eed62757aeda7f05848d8a8ddc7975a;p=imagemagick --- diff --git a/magick/compress.c b/magick/compress.c index 3722a50a9..c40605e29 100644 --- a/magick/compress.c +++ b/magick/compress.c @@ -416,6 +416,9 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) runlength=0; \ } + CacheView + *image_view; + const HuffmanTable *entry; @@ -432,9 +435,6 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) int byte; - ssize_t - y; - MagickBooleanType proceed; @@ -448,7 +448,8 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) *p; ssize_t - count; + count, + y; unsigned char *scanline; @@ -509,14 +510,15 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) image->y_resolution=196.0; image->units=PixelsPerInchResolution; exception=(&image->exception); + image_view=AcquireCacheView(image); for (y=0; ((y < (ssize_t) image->rows) && (null_lines < 3)); ) { - register ssize_t - x; - register PixelPacket *restrict q; + register ssize_t + x; + /* Initialize scanline to white. */ @@ -628,23 +630,24 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) Transfer scanline to image pixels. */ p=scanline; - q=QueueAuthenticPixels(image,0,y,image->columns,1,exception); + q=QueueCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception); if (q == (PixelPacket *) NULL) break; - indexes=GetAuthenticIndexQueue(image); + indexes=GetCacheViewAuthenticIndexQueue(image_view); for (x=0; x < (ssize_t) image->columns; x++) { index=(IndexPacket) (*p++); indexes[x]=index; *q++=image->colormap[(ssize_t) index]; } - if (SyncAuthenticPixels(image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) break; proceed=SetImageProgress(image,LoadImageTag,y,image->rows); if (proceed == MagickFalse) break; y++; } + image_view=DestroyCacheView(image_view); image->rows=(size_t) MagickMax((size_t) y-3,1); image->compression=FaxCompression; /* diff --git a/magick/fx.c b/magick/fx.c index e7f58fb6c..756ffce1c 100644 --- a/magick/fx.c +++ b/magick/fx.c @@ -3523,8 +3523,8 @@ static inline Quantum PlasmaPixel(RandomInfo *random_info, } MagickExport MagickBooleanType PlasmaImageProxy(Image *image, - RandomInfo *random_info,const SegmentInfo *segment,size_t attenuate, - size_t depth) + CacheView *image_view,RandomInfo *random_info,const SegmentInfo *segment, + size_t attenuate,size_t depth) { ExceptionInfo *exception; @@ -3559,22 +3559,24 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, local_info=(*segment); local_info.x2=(double) x_mid; local_info.y2=(double) y_mid; - (void) PlasmaImageProxy(image,random_info,&local_info,attenuate,depth); + (void) PlasmaImageProxy(image,image_view,random_info,&local_info, + attenuate,depth); local_info=(*segment); local_info.y1=(double) y_mid; local_info.x2=(double) x_mid; - (void) PlasmaImageProxy(image,random_info,&local_info,attenuate,depth); + (void) PlasmaImageProxy(image,image_view,random_info,&local_info, + attenuate,depth); local_info=(*segment); local_info.x1=(double) x_mid; local_info.y2=(double) y_mid; - (void) PlasmaImageProxy(image,random_info,&local_info,attenuate,depth); + (void) PlasmaImageProxy(image,image_view,random_info,&local_info, + attenuate,depth); local_info=(*segment); local_info.x1=(double) x_mid; local_info.y1=(double) y_mid; - return(PlasmaImageProxy(image,random_info,&local_info,attenuate,depth)); + return(PlasmaImageProxy(image,image_view,random_info,&local_info, + attenuate,depth)); } - if (SetImageStorageClass(image,DirectClass) == MagickFalse) - return(MagickFalse); x_mid=(ssize_t) ceil((segment->x1+segment->x2)/2-0.5); y_mid=(ssize_t) ceil((segment->y1+segment->y2)/2-0.5); if ((segment->x1 == (double) x_mid) && (segment->x2 == (double) x_mid) && @@ -3594,11 +3596,11 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, Left pixel. */ x=(ssize_t) ceil(segment->x1-0.5); - (void) GetOneVirtualPixel(image,x,(ssize_t) ceil(segment->y1-0.5),&u, - exception); - (void) GetOneVirtualPixel(image,x,(ssize_t) ceil(segment->y2-0.5),&v, - exception); - q=QueueAuthenticPixels(image,x,y_mid,1,1,exception); + (void) GetOneCacheViewVirtualPixel(image_view,x,(ssize_t) + ceil(segment->y1-0.5),&u,exception); + (void) GetOneCacheViewVirtualPixel(image_view,x,(ssize_t) + ceil(segment->y2-0.5),&v,exception); + q=QueueCacheViewAuthenticPixels(image_view,x,y_mid,1,1,exception); if (q == (PixelPacket *) NULL) return(MagickTrue); q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0, @@ -3607,18 +3609,18 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, plasma); q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0, plasma); - (void) SyncAuthenticPixels(image,exception); + (void) SyncCacheViewAuthenticPixels(image_view,exception); if (segment->x1 != segment->x2) { /* Right pixel. */ x=(ssize_t) ceil(segment->x2-0.5); - (void) GetOneVirtualPixel(image,x,(ssize_t) ceil(segment->y1-0.5),&u, - exception); - (void) GetOneVirtualPixel(image,x,(ssize_t) ceil(segment->y2-0.5),&v, - exception); - q=QueueAuthenticPixels(image,x,y_mid,1,1,exception); + (void) GetOneCacheViewVirtualPixel(image_view,x,(ssize_t) + ceil(segment->y1-0.5),&u,exception); + (void) GetOneCacheViewVirtualPixel(image_view,x,(ssize_t) + ceil(segment->y2-0.5),&v,exception); + q=QueueCacheViewAuthenticPixels(image_view,x,y_mid,1,1,exception); if (q == (PixelPacket *) NULL) return(MagickTrue); q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0, @@ -3626,8 +3628,8 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, q->green=PlasmaPixel(random_info,(MagickRealType) (u.green+v.green)/ 2.0,plasma); q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0, - plasma); - (void) SyncAuthenticPixels(image,exception); + plasma); + (void) SyncCacheViewAuthenticPixels(image_view,exception); } } if ((segment->y1 != (double) y_mid) || (segment->y2 != (double) y_mid)) @@ -3641,11 +3643,11 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, Bottom pixel. */ y=(ssize_t) ceil(segment->y2-0.5); - (void) GetOneVirtualPixel(image,(ssize_t) ceil(segment->x1-0.5),y,&u, - exception); - (void) GetOneVirtualPixel(image,(ssize_t) ceil(segment->x2-0.5),y,&v, - exception); - q=QueueAuthenticPixels(image,x_mid,y,1,1,exception); + (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) + ceil(segment->x1-0.5),y,&u,exception); + (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) + ceil(segment->x2-0.5),y,&v,exception); + q=QueueCacheViewAuthenticPixels(image_view,x_mid,y,1,1,exception); if (q == (PixelPacket *) NULL) return(MagickTrue); q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0, @@ -3654,7 +3656,7 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, 2.0,plasma); q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0, plasma); - (void) SyncAuthenticPixels(image,exception); + (void) SyncCacheViewAuthenticPixels(image_view,exception); } if (segment->y1 != segment->y2) { @@ -3665,11 +3667,11 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, Top pixel. */ y=(ssize_t) ceil(segment->y1-0.5); - (void) GetOneVirtualPixel(image,(ssize_t) ceil(segment->x1-0.5),y,&u, - exception); - (void) GetOneVirtualPixel(image,(ssize_t) ceil(segment->x2-0.5),y,&v, - exception); - q=QueueAuthenticPixels(image,x_mid,y,1,1,exception); + (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) + ceil(segment->x1-0.5),y,&u,exception); + (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) + ceil(segment->x2-0.5),y,&v,exception); + q=QueueCacheViewAuthenticPixels(image_view,x_mid,y,1,1,exception); if (q == (PixelPacket *) NULL) return(MagickTrue); q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0, @@ -3678,7 +3680,7 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, 2.0,plasma); q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0, plasma); - (void) SyncAuthenticPixels(image,exception); + (void) SyncCacheViewAuthenticPixels(image_view,exception); } } if ((segment->x1 != segment->x2) || (segment->y1 != segment->y2)) @@ -3694,8 +3696,8 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, (void) GetOneVirtualPixel(image,x,y,&u,exception); x=(ssize_t) ceil(segment->x2-0.5); y=(ssize_t) ceil(segment->y2-0.5); - (void) GetOneVirtualPixel(image,x,y,&v,exception); - q=QueueAuthenticPixels(image,x_mid,y_mid,1,1,exception); + (void) GetOneCacheViewVirtualPixel(image_view,x,y,&v,exception); + q=QueueCacheViewAuthenticPixels(image_view,x_mid,y_mid,1,1,exception); if (q == (PixelPacket *) NULL) return(MagickTrue); q->red=PlasmaPixel(random_info,(MagickRealType) (u.red+v.red)/2.0, @@ -3704,7 +3706,7 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, plasma); q->blue=PlasmaPixel(random_info,(MagickRealType) (u.blue+v.blue)/2.0, plasma); - (void) SyncAuthenticPixels(image,exception); + (void) SyncCacheViewAuthenticPixels(image_view,exception); } if (((segment->x2-segment->x1) < 3.0) && ((segment->y2-segment->y1) < 3.0)) return(MagickTrue); @@ -3714,6 +3716,9 @@ MagickExport MagickBooleanType PlasmaImageProxy(Image *image, MagickExport MagickBooleanType PlasmaImage(Image *image, const SegmentInfo *segment,size_t attenuate,size_t depth) { + CacheView + *image_view; + MagickBooleanType status; @@ -3726,9 +3731,13 @@ MagickExport MagickBooleanType PlasmaImage(Image *image, assert(image->signature == MagickSignature); if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"..."); + if (SetImageStorageClass(image,DirectClass) == MagickFalse) + return(MagickFalse); + image_view=AcquireCacheView(image); random_info=AcquireRandomInfo(); - status=PlasmaImageProxy(image,random_info,segment,attenuate,depth); + status=PlasmaImageProxy(image,image_view,random_info,segment,attenuate,depth); random_info=DestroyRandomInfo(random_info); + image_view=DestroyCacheView(image_view); return(status); } diff --git a/magick/histogram.c b/magick/histogram.c index a58631452..ca43fd0e0 100644 --- a/magick/histogram.c +++ b/magick/histogram.c @@ -1227,8 +1227,8 @@ MagickExport size_t GetNumberColors(const Image *image,FILE *file, % */ -static void UniqueColorsToImage(Image *image,CubeInfo *cube_info, - const NodeInfo *node_info,ExceptionInfo *exception) +static void UniqueColorsToImage(Image *unique_image,CacheView *unique_view, + CubeInfo *cube_info,const NodeInfo *node_info,ExceptionInfo *exception) { #define UniqueColorsImageTag "UniqueColors/Image" @@ -1244,10 +1244,11 @@ static void UniqueColorsToImage(Image *image,CubeInfo *cube_info, /* Traverse any children. */ - number_children=image->matte == MagickFalse ? 8UL : 16UL; + number_children=unique_image->matte == MagickFalse ? 8UL : 16UL; for (i=0; i < (ssize_t) number_children; i++) if (node_info->child[i] != (NodeInfo *) NULL) - UniqueColorsToImage(image,cube_info,node_info->child[i],exception); + UniqueColorsToImage(unique_image,unique_view,cube_info, + node_info->child[i],exception); if (node_info->level == (MaxTreeDepth-1)) { register ColorPacket @@ -1262,24 +1263,25 @@ static void UniqueColorsToImage(Image *image,CubeInfo *cube_info, p=node_info->list; for (i=0; i < (ssize_t) node_info->number_unique; i++) { - q=QueueAuthenticPixels(image,cube_info->x,0,1,1,exception); + q=QueueCacheViewAuthenticPixels(unique_view,cube_info->x,0,1,1, + exception); if (q == (PixelPacket *) NULL) continue; - indexes=GetAuthenticIndexQueue(image); + indexes=GetCacheViewAuthenticIndexQueue(unique_view); *q=p->pixel; - if (image->colorspace == CMYKColorspace) + if (unique_image->colorspace == CMYKColorspace) *indexes=p->index; - if (SyncAuthenticPixels(image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(unique_view,exception) == MagickFalse) break; cube_info->x++; p++; } - if (image->progress_monitor != (MagickProgressMonitor) NULL) + if (unique_image->progress_monitor != (MagickProgressMonitor) NULL) { MagickBooleanType proceed; - proceed=SetImageProgress(image,UniqueColorsImageTag, + proceed=SetImageProgress(unique_image,UniqueColorsImageTag, cube_info->progress,cube_info->colors); if (proceed == MagickFalse) status=MagickFalse; @@ -1291,6 +1293,9 @@ static void UniqueColorsToImage(Image *image,CubeInfo *cube_info, MagickExport Image *UniqueImageColors(const Image *image, ExceptionInfo *exception) { + CacheView + *unique_view; + CubeInfo *cube_info; @@ -1309,7 +1314,10 @@ MagickExport Image *UniqueImageColors(const Image *image, unique_image=DestroyImage(unique_image); return((Image *) NULL); } - UniqueColorsToImage(unique_image,cube_info,cube_info->root,exception); + unique_view=AcquireCacheView(unique_image); + UniqueColorsToImage(unique_image,unique_view,cube_info,cube_info->root, + exception); + unique_view=DestroyCacheView(unique_view); if (cube_info->colors < MaxColormapSize) { QuantizeInfo diff --git a/magick/resize.c b/magick/resize.c index 7f24af2c9..1efc6be2f 100644 --- a/magick/resize.c +++ b/magick/resize.c @@ -133,7 +133,7 @@ static MagickRealType % */ -#define MagickREALTYPEPI ((MagickRealType) 3.14159265358979323846264338327950288420L) +#define MagickPIL ((MagickRealType) 3.14159265358979323846264338327950288420L) static MagickRealType Bessel(const MagickRealType x, const ResizeFilter *magick_unused(resize_filter)) @@ -145,8 +145,8 @@ static MagickRealType Bessel(const MagickRealType x, http://www.ph.ed.ac.uk/%7ewjh/teaching/mo/slides/lens/lens.pdf. */ if (x == 0.0) - return((MagickRealType) (0.25*MagickREALTYPEPI)); - return(BesselOrderOne((MagickRealType) (MagickREALTYPEPI*x))/(x+x)); + return((MagickRealType) (0.25*MagickPIL)); + return(BesselOrderOne((MagickRealType) (MagickPIL*x))/(x+x)); } static MagickRealType Blackman(const MagickRealType x, @@ -158,7 +158,7 @@ static MagickRealType Blackman(const MagickRealType x, Refactored by Chantal Racette and Nicolas Robidoux to one trig call and five flops. */ - const MagickRealType cospix = cos((double) (MagickREALTYPEPI*x)); + const MagickRealType cospix = cos((double) (MagickPIL*x)); return(0.34+cospix*(0.5+cospix*0.16)); } @@ -172,9 +172,9 @@ static MagickRealType Bohman(const MagickRealType x, and 7 flops, taking advantage of the fact that the support of Bohman is 1 (so that we know that sin(pi x) >= 0). */ - const double cospix = cos((double) (MagickREALTYPEPI*x)); + const double cospix = cos((double) (MagickPIL*x)); const double sinpix = sqrt(1.0-cospix*cospix); - return((MagickRealType) ((1.0-x)*cospix+(1.0/MagickREALTYPEPI)*sinpix)); + return((MagickRealType) ((1.0-x)*cospix+(1.0/MagickPIL)*sinpix)); } static MagickRealType Box(const MagickRealType x, @@ -246,7 +246,7 @@ static MagickRealType Hanning(const MagickRealType x, /* Cosine window function: .5 + .5 cos(pi x). */ - const MagickRealType cospix = cos((double) (MagickREALTYPEPI*x)); + const MagickRealType cospix = cos((double) (MagickPIL*x)); return(0.5+0.5*cospix); } @@ -256,7 +256,7 @@ static MagickRealType Hamming(const MagickRealType x, /* Offset cosine window function: .54 + .46 cos(pi x). */ - const MagickRealType cospix = cos((double) (MagickREALTYPEPI*x)); + const MagickRealType cospix = cos((double) (MagickPIL*x)); return(0.54+0.46*cospix); } @@ -333,7 +333,7 @@ static MagickRealType Sinc(const MagickRealType x, */ if (x != 0.0) { - const MagickRealType pix = (MagickRealType) (MagickREALTYPEPI*x); + const MagickRealType pix = (MagickRealType) (MagickPIL*x); return(sin((double) pix)/pix); } return(1.0); @@ -373,7 +373,7 @@ static MagickRealType SincFast(const MagickRealType x, */ if (x > 4.0) { - const MagickRealType pix = (MagickRealType) (MagickREALTYPEPI*x); + const MagickRealType pix = (MagickRealType) (MagickPIL*x); return(sin((double) pix)/pix); } { @@ -1666,6 +1666,9 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, { #define LiquidRescaleImageTag "Rescale/Image" + CacheView + *rescale_view; + const char *map; @@ -1775,6 +1778,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, } GetMagickPixelPacket(rescale_image,&pixel); (void) lqr_carver_scan_reset(carver); + rescale_view=AcquireCacheView(rescale_image); while (lqr_carver_scan(carver,&x,&y,&packet) != 0) { register IndexPacket @@ -1783,10 +1787,10 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, register PixelPacket *restrict q; - q=QueueAuthenticPixels(rescale_image,x,y,1,1,exception); + q=QueueCacheviewAuthenticPixels(rescale_view,x,y,1,1,exception); if (q == (PixelPacket *) NULL) break; - rescale_indexes=GetAuthenticIndexQueue(rescale_image); + rescale_indexes=GetCacheViewAuthenticIndexQueue(rescale_view); pixel.red=QuantumRange*(packet[0]/255.0); pixel.green=QuantumRange*(packet[1]/255.0); pixel.blue=QuantumRange*(packet[2]/255.0); @@ -1802,9 +1806,10 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, pixel.opacity=QuantumRange*(packet[4]/255.0); } SetPixelPacket(rescale_image,&pixel,q,rescale_indexes); - if (SyncAuthenticPixels(rescale_image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(rescale_view,exception) == MagickFalse) break; } + rescale_view=DestroyCacheView(rescale_view); /* Relinquish resources. */ diff --git a/magick/transform.c b/magick/transform.c index 803cd30fc..16a67134a 100644 --- a/magick/transform.c +++ b/magick/transform.c @@ -295,6 +295,10 @@ MagickExport Image *ChopImage(const Image *image,const RectangleInfo *chop_info, MagickExport Image *ConsolidateCMYKImages(const Image *images, ExceptionInfo *exception) { + CacheView + *cmyk_view, + *image_view; + Image *cmyk_image, *cmyk_images; @@ -324,6 +328,8 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, if (SetImageStorageClass(cmyk_image,DirectClass) == MagickFalse) break; (void) SetImageColorspace(cmyk_image,CMYKColorspace); + image_view=AcquireCacheView(images); + cmyk_view=AcquireCacheView(cmyk_image); for (y=0; y < (ssize_t) images->rows; y++) { register const PixelPacket @@ -335,8 +341,9 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, register PixelPacket *restrict q; - p=GetVirtualPixels(images,0,y,images->columns,1,exception); - q=QueueAuthenticPixels(cmyk_image,0,y,cmyk_image->columns,1,exception); + p=GetCacheViewVirtualPixels(image_view,0,y,images->columns,1,exception); + q=QueueCacheViewAuthenticPixels(cmyk_view,0,y,cmyk_image->columns,1, + exception); if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) break; for (x=0; x < (ssize_t) images->columns; x++) @@ -345,12 +352,16 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, p++; q++; } - if (SyncAuthenticPixels(cmyk_image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(cmyk_view,exception) == MagickFalse) break; } + cmyk_view=DestroyCacheView(cmyk_view); + image_view=DestroyCacheView(image_view); images=GetNextImageInList(images); if (images == (Image *) NULL) break; + image_view=AcquireCacheView(images); + cmyk_view=AcquireCacheView(cmyk_image); for (y=0; y < (ssize_t) images->rows; y++) { register const PixelPacket @@ -362,8 +373,9 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, register PixelPacket *restrict q; - p=GetVirtualPixels(images,0,y,images->columns,1,exception); - q=GetAuthenticPixels(cmyk_image,0,y,cmyk_image->columns,1,exception); + p=GetCacheViewVirtualPixels(image_view,0,y,images->columns,1,exception); + q=GetCacheViewAuthenticPixels(cmyk_view,0,y,cmyk_image->columns,1, + exception); if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) break; for (x=0; x < (ssize_t) images->columns; x++) @@ -372,12 +384,16 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, p++; q++; } - if (SyncAuthenticPixels(cmyk_image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(cmyk_view,exception) == MagickFalse) break; } + cmyk_view=DestroyCacheView(cmyk_view); + image_view=DestroyCacheView(image_view); images=GetNextImageInList(images); if (images == (Image *) NULL) break; + image_view=AcquireCacheView(images); + cmyk_view=AcquireCacheView(cmyk_image); for (y=0; y < (ssize_t) images->rows; y++) { register const PixelPacket @@ -389,8 +405,9 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, register PixelPacket *restrict q; - p=GetVirtualPixels(images,0,y,images->columns,1,exception); - q=GetAuthenticPixels(cmyk_image,0,y,cmyk_image->columns,1,exception); + p=GetCacheViewVirtualPixels(image_view,0,y,images->columns,1,exception); + q=GetCacheViewAuthenticPixels(cmyk_view,0,y,cmyk_image->columns,1, + exception); if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) break; for (x=0; x < (ssize_t) images->columns; x++) @@ -399,12 +416,16 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, p++; q++; } - if (SyncAuthenticPixels(cmyk_image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(cmyk_view,exception) == MagickFalse) break; } + cmyk_view=DestroyCacheView(cmyk_view); + image_view=DestroyCacheView(image_view); images=GetNextImageInList(images); if (images == (Image *) NULL) break; + image_view=AcquireCacheView(images); + cmyk_view=AcquireCacheView(cmyk_image); for (y=0; y < (ssize_t) images->rows; y++) { register const PixelPacket @@ -419,19 +440,22 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, register PixelPacket *restrict q; - p=GetVirtualPixels(images,0,y,images->columns,1,exception); - q=GetAuthenticPixels(cmyk_image,0,y,cmyk_image->columns,1,exception); + p=GetCacheViewVirtualPixels(image_view,0,y,images->columns,1,exception); + q=GetCacheViewAuthenticPixels(cmyk_view,0,y,cmyk_image->columns,1, + exception); if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) break; - indexes=GetAuthenticIndexQueue(cmyk_image); + indexes=GetCacheViewAuthenticIndexQueue(cmyk_view); for (x=0; x < (ssize_t) images->columns; x++) { indexes[x]=(IndexPacket) (QuantumRange-PixelIntensityToQuantum(p)); p++; } - if (SyncAuthenticPixels(cmyk_image,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(cmyk_view,exception) == MagickFalse) break; } + cmyk_view=DestroyCacheView(cmyk_view); + image_view=DestroyCacheView(image_view); AppendImageToList(&cmyk_images,cmyk_image); images=GetNextImageInList(images); if (images == (Image *) NULL)