From db070957cf6bf959df9283a482377e8854c3d4d2 Mon Sep 17 00:00:00 2001 From: cristy Date: Fri, 20 Apr 2012 14:33:00 +0000 Subject: [PATCH] --- Magick++/lib/Magick++/Include.h | 3 +- Magick++/lib/Pixels.cpp | 2 +- MagickCore/annotate.c | 4 +- MagickCore/attribute.c | 12 +++--- MagickCore/cache-view.c | 60 ++++++++++++++++++++++++--- MagickCore/cache-view.h | 3 +- MagickCore/cache.c | 4 +- MagickCore/channel.c | 12 +++--- MagickCore/cipher.c | 4 +- MagickCore/color.c | 4 +- MagickCore/colormap.c | 4 +- MagickCore/colorspace.c | 34 ++++++++-------- MagickCore/compare.c | 40 +++++++++--------- MagickCore/composite.c | 28 ++++++------- MagickCore/compress.c | 2 +- MagickCore/decorate.c | 6 +-- MagickCore/display.c | 10 ++--- MagickCore/distort.c | 7 ++-- MagickCore/draw.c | 10 ++--- MagickCore/effect.c | 52 ++++++++++++------------ MagickCore/enhance.c | 38 +++++++++-------- MagickCore/feature.c | 4 +- MagickCore/fourier.c | 14 +++---- MagickCore/fx-private.h | 2 +- MagickCore/fx.c | 72 +++++++++++++++++---------------- MagickCore/histogram.c | 8 ++-- MagickCore/image-view.c | 20 +++++---- MagickCore/image-view.h | 4 +- MagickCore/image.c | 41 +++++++++---------- MagickCore/magick-config.h | 34 ++++++++++------ MagickCore/morphology.c | 8 ++-- MagickCore/paint.c | 14 +++---- MagickCore/pixel.c | 6 +-- MagickCore/prepress.c | 2 +- MagickCore/profile.c | 2 +- MagickCore/property.c | 4 +- MagickCore/quantize.c | 21 +++++----- MagickCore/resample.c | 11 +++-- MagickCore/resample.h | 2 +- MagickCore/resize.c | 24 +++++------ MagickCore/segment.c | 4 +- MagickCore/shear.c | 12 +++--- MagickCore/signature.c | 2 +- MagickCore/statistic.c | 18 ++++----- MagickCore/threshold.c | 16 ++++---- MagickCore/transform.c | 40 +++++++++--------- MagickCore/version.h | 4 +- MagickCore/xwindow.c | 16 ++++---- MagickWand/magick-image.c | 2 +- MagickWand/mogrify.c | 2 +- MagickWand/operation.c | 2 +- MagickWand/pixel-iterator.c | 16 ++++++-- MagickWand/wand-view.c | 16 ++++++-- PerlMagick/Magick.xs | 9 +++-- coders/msl.c | 3 +- coders/xtrn.c | 6 +-- 56 files changed, 442 insertions(+), 358 deletions(-) diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h index a6b9a75cf..a839275fc 100644 --- a/Magick++/lib/Magick++/Include.h +++ b/Magick++/lib/Magick++/Include.h @@ -549,8 +549,9 @@ namespace Magick // // ImageMagick symbols used in implementation code // - using MagickCore::AcquireCacheView; + using MagickCore::AcquireAuthenticCacheView; using MagickCore::AcquireExceptionInfo; + using MagickCore::AcquireVirtualCacheView; using MagickCore::GetCacheViewVirtualPixels; using MagickCore::AcquireImage; using MagickCore::GetVirtualPixels; diff --git a/Magick++/lib/Pixels.cpp b/Magick++/lib/Pixels.cpp index 5a54ce65e..8c6b5cf1d 100644 --- a/Magick++/lib/Pixels.cpp +++ b/Magick++/lib/Pixels.cpp @@ -24,7 +24,7 @@ namespace Magick // Construct pixel view using specified image. Magick::Pixels::Pixels( Magick::Image &image_ ) : _image(image_), - _view(AcquireCacheView(_image.image())), + _view(AcquireVirtualCacheView(_image.image(),&_exception)), _x(0), _y(0), _columns(0), diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c index 457866126..d61fb064b 100644 --- a/MagickCore/annotate.c +++ b/MagickCore/annotate.c @@ -1386,7 +1386,7 @@ static MagickBooleanType RenderFreetype(Image *image,const DrawInfo *draw_info, Rasterize the glyph. */ status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); p=bitmap->bitmap.buffer; for (y=0; y < (ssize_t) bitmap->bitmap.rows; y++) { @@ -1818,7 +1818,7 @@ static MagickBooleanType RenderPostscript(Image *image, (void) SetImageAlphaChannel(annotate_image,OpaqueAlphaChannel, exception); fill_color=draw_info->fill; - annotate_view=AcquireCacheView(annotate_image); + annotate_view=AcquireAuthenticCacheView(annotate_image,exception); for (y=0; y < (ssize_t) annotate_image->rows; y++) { register ssize_t diff --git a/MagickCore/attribute.c b/MagickCore/attribute.c index a366d9827..89f9abc11 100644 --- a/MagickCore/attribute.c +++ b/MagickCore/attribute.c @@ -149,7 +149,7 @@ MagickExport RectangleInfo GetImageBoundingBox(const Image *image, bounds.x=(ssize_t) image->columns; bounds.y=(ssize_t) image->rows; GetPixelInfo(image,&target[0]); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); p=GetCacheViewVirtualPixels(image_view,0,0,1,1,exception); if (p == (const Quantum *) NULL) { @@ -347,7 +347,7 @@ MagickExport size_t GetImageDepth(const Image *image,ExceptionInfo *exception) current_depth=(size_t *) RelinquishMagickMemory(current_depth); return(depth); } - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); #if !defined(MAGICKCORE_HDRI_SUPPORT) if (QuantumRange <= MaxMap) { @@ -688,7 +688,7 @@ MagickExport MagickBooleanType IsImageGray(const Image *image, if (IssRGBColorspace(image->colorspace) == MagickFalse) return(MagickFalse); type=BilevelType; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); @@ -772,7 +772,7 @@ MagickExport MagickBooleanType IsImageMonochrome(const Image *image, if (IssRGBColorspace(image->colorspace) == MagickFalse) return(MagickFalse); type=BilevelType; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); @@ -847,7 +847,7 @@ MagickExport MagickBooleanType IsImageOpaque(const Image *image, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); if (image->matte == MagickFalse) return(MagickTrue); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); @@ -948,7 +948,7 @@ MagickExport MagickBooleanType SetImageDepth(Image *image, return(status); } status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if !defined(MAGICKCORE_HDRI_SUPPORT) if (QuantumRange <= MaxMap) { diff --git a/MagickCore/cache-view.c b/MagickCore/cache-view.c index 3eb8d5b75..2d95ced45 100644 --- a/MagickCore/cache-view.c +++ b/MagickCore/cache-view.c @@ -86,25 +86,70 @@ struct _CacheView % % % % % % -% A c q u i r e C a c h e V i e w % +% A c q u i r e A u t h e n t i c C a c h e V i e w % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% AcquireCacheView() acquires a view into the pixel cache, using the -% VirtualPixelMethod that is defined within the given image itself. +% AcquireAuthenticCacheView() acquires an authentic view into the pixel cache. % -% The format of the AcquireCacheView method is: +% The format of the AcquireAuthenticCacheView method is: % -% CacheView *AcquireCacheView(const Image *image) +% CacheView *AcquireAuthenticCacheView(const Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ -MagickExport CacheView *AcquireCacheView(const Image *image) +MagickExport CacheView *AcquireAuthenticCacheView(const Image *image, + ExceptionInfo *exception) +{ + CacheView + *cache_view; + + MagickBooleanType + status; + + cache_view=AcquireVirtualCacheView(image,exception); + status=SyncImagePixelCache(cache_view->image,exception); + if (status == MagickFalse) + ThrowFatalException(CacheFatalError,"UnableToAcquireCacheView"); + return(cache_view); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % +% A c q u i r e V i r t u a l C a c h e V i e w % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% AcquireVirtualCacheView() acquires a virtual view into the pixel cache, +% using the VirtualPixelMethod that is defined within the given image itself. +% +% The format of the AcquireVirtualCacheView method is: +% +% CacheView *AcquireVirtualCacheView(const Image *image, +% ExceptionInfo *exception) +% +% A description of each parameter follows: +% +% o image: the image. +% +% o exception: return any errors or warnings in this structure. +% +*/ +MagickExport CacheView *AcquireVirtualCacheView(const Image *image, + ExceptionInfo *exception) { CacheView *cache_view; @@ -113,6 +158,7 @@ MagickExport CacheView *AcquireCacheView(const Image *image) assert(image->signature == MagickSignature); if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); + (void) exception; cache_view=(CacheView *) AcquireQuantumMemory(1,sizeof(*cache_view)); if (cache_view == (CacheView *) NULL) ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed"); @@ -350,6 +396,8 @@ MagickExport ClassType GetCacheViewStorageClass(const CacheView *cache_view) % o x,y,columns,rows: These values define the perimeter of a region of % pixels. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport Quantum *GetCacheViewAuthenticPixels(CacheView *cache_view, const ssize_t x,const ssize_t y,const size_t columns,const size_t rows, diff --git a/MagickCore/cache-view.h b/MagickCore/cache-view.h index dd4e6ba2e..3d787c82d 100644 --- a/MagickCore/cache-view.h +++ b/MagickCore/cache-view.h @@ -49,7 +49,8 @@ typedef struct _CacheView CacheView; extern MagickExport CacheView - *AcquireCacheView(const Image *), + *AcquireAuthenticCacheView(const Image *,ExceptionInfo *), + *AcquireVirtualCacheView(const Image *,ExceptionInfo *), *CloneCacheView(const CacheView *), *DestroyCacheView(CacheView *); diff --git a/MagickCore/cache.c b/MagickCore/cache.c index 5a2f652f0..95fd4d5a3 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -4889,9 +4889,9 @@ static MagickBooleanType SetCacheAlphaChannel(Image *image,const Quantum alpha, assert(cache_info->signature == MagickSignature); image->matte=MagickTrue; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp parallel for schedule(static,4) shared(status) + #pragma omp parallel for schedule(static) shared(status) #endif for (y=0; y < (ssize_t) image->rows; y++) { diff --git a/MagickCore/channel.c b/MagickCore/channel.c index fe1da2b67..ce0bc95b4 100644 --- a/MagickCore/channel.c +++ b/MagickCore/channel.c @@ -132,8 +132,8 @@ static MagickBooleanType ChannelImage(Image *destination_image, y; status=MagickTrue; - source_view=AcquireCacheView(source_image); - destination_view=AcquireCacheView(destination_image); + source_view=AcquireVirtualCacheView(source_image,exception); + destination_view=AcquireAuthenticCacheView(destination_image,exception); height=MagickMin(source_image->rows,destination_image->rows); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) @@ -492,7 +492,7 @@ MagickExport Image *CombineImages(const Image *image,ExceptionInfo *exception) */ status=MagickTrue; progress=0; - combine_view=AcquireCacheView(combine_image); + combine_view=AcquireAuthenticCacheView(combine_image,exception); for (y=0; y < (ssize_t) combine_image->rows; y++) { CacheView @@ -540,7 +540,7 @@ MagickExport Image *CombineImages(const Image *image,ExceptionInfo *exception) traits=GetPixelChannelMapTraits(combine_image,channel); if (traits == UndefinedPixelTrait) continue; - image_view=AcquireCacheView(next); + image_view=AcquireVirtualCacheView(next,exception); p=GetCacheViewVirtualPixels(image_view,0,y,next->columns,1,exception); if (p == (const Quantum *) NULL) continue; @@ -650,8 +650,8 @@ MagickExport Image *SeparateImage(const Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - separate_view=AcquireCacheView(separate_image); + image_view=AcquireVirtualCacheView(image,exception); + separate_view=AcquireAuthenticCacheView(separate_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(progress,status) #endif diff --git a/MagickCore/cipher.c b/MagickCore/cipher.c index f006526df..314e83ae1 100644 --- a/MagickCore/cipher.c +++ b/MagickCore/cipher.c @@ -641,7 +641,7 @@ MagickExport MagickBooleanType PasskeyDecipherImage(Image *image, */ quantum_type=GetQuantumType(image,exception); pixels=GetQuantumPixels(quantum_info); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register ssize_t @@ -847,7 +847,7 @@ MagickExport MagickBooleanType PasskeyEncipherImage(Image *image, */ quantum_type=GetQuantumType(image,exception); pixels=GetQuantumPixels(quantum_info); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register ssize_t diff --git a/MagickCore/color.c b/MagickCore/color.c index b49bffec1..a1dff15ea 100644 --- a/MagickCore/color.c +++ b/MagickCore/color.c @@ -1656,8 +1656,8 @@ MagickExport MagickBooleanType IsEquivalentImage(const Image *image, status=MagickTrue; GetPixelInfo(image,&pixel); GetPixelInfo(image,&target); - image_view=AcquireCacheView(image); - target_view=AcquireCacheView(target_image); + image_view=AcquireVirtualCacheView(image,exception); + target_view=AcquireVirtualCacheView(target_image,exception); for (y=(*y_offset); y < (ssize_t) image->rows; y++) { for (x=y == 0 ? *x_offset : 0; x < (ssize_t) image->columns; x++) diff --git a/MagickCore/colormap.c b/MagickCore/colormap.c index 5da424225..5a420c1e1 100644 --- a/MagickCore/colormap.c +++ b/MagickCore/colormap.c @@ -201,7 +201,7 @@ MagickExport MagickBooleanType CycleColormapImage(Image *image, if (image->storage_class == DirectClass) (void) SetImageType(image,PaletteType,exception); status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -345,7 +345,7 @@ MagickExport MagickBooleanType SortColormapByIntensity(Image *image, for (i=0; i < (ssize_t) image->colors; i++) pixels[(ssize_t) image->colormap[i].alpha]=(unsigned short) i; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { Quantum diff --git a/MagickCore/colorspace.c b/MagickCore/colorspace.c index 525845b86..5f0314a47 100644 --- a/MagickCore/colorspace.c +++ b/MagickCore/colorspace.c @@ -241,7 +241,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -300,7 +300,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, return(MagickFalse); } GetPixelInfo(image,&zero); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -356,7 +356,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -420,7 +420,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -484,7 +484,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -548,7 +548,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -662,7 +662,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, logmap[i]=ScaleMapToQuantum((MagickRealType) (MaxMap*(reference_white+ log10(black+((MagickRealType) i/MaxMap)*(1.0-black))/((gamma/density)* 0.002/film_gamma))/1024.0)); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -1091,7 +1091,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, /* Convert DirectClass image. */ - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -1699,7 +1699,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -1758,7 +1758,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, return(MagickFalse); } GetPixelInfo(image,&zero); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -1814,7 +1814,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -1880,7 +1880,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -1946,7 +1946,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2012,7 +2012,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2127,7 +2127,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, logmap[i]=(Quantum) QuantumRange; if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2526,7 +2526,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, /* Convert DirectClass image. */ - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2634,7 +2634,6 @@ static MagickBooleanType TransformsRGBImage(Image *image, /* Convert PseudoClass image. */ - image_view=AcquireCacheView(image); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2699,7 +2698,6 @@ static MagickBooleanType TransformsRGBImage(Image *image, } } } - image_view=DestroyCacheView(image_view); (void) SyncImage(image,exception); break; } diff --git a/MagickCore/compare.c b/MagickCore/compare.c index 50a832b52..09dcf9c5d 100644 --- a/MagickCore/compare.c +++ b/MagickCore/compare.c @@ -173,9 +173,9 @@ MagickExport Image *CompareImages(Image *image,const Image *reconstruct_image, Generate difference image. */ status=MagickTrue; - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); - highlight_view=AcquireCacheView(highlight_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); + highlight_view=AcquireAuthenticCacheView(highlight_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -322,8 +322,8 @@ static MagickBooleanType GetAbsoluteDistortion(const Image *image, Compute the absolute difference in pixels between two images. */ status=MagickTrue; - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -446,8 +446,8 @@ static MagickBooleanType GetFuzzDistortion(const Image *image, y; status=MagickTrue; - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -546,8 +546,8 @@ static MagickBooleanType GetMeanAbsoluteDistortion(const Image *image, y; status=MagickTrue; - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -653,8 +653,8 @@ static MagickBooleanType GetMeanErrorPerPixel(Image *image, area=0.0; maximum_error=0.0; mean_error=0.0; - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -740,8 +740,8 @@ static MagickBooleanType GetMeanSquaredDistortion(const Image *image, y; status=MagickTrue; - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -861,8 +861,8 @@ static MagickBooleanType GetNormalizedCrossCorrelationDistortion( for (i=0; i <= MaxPixelChannels; i++) distortion[i]=0.0; area=1.0/((MagickRealType) image->columns*image->rows-1); - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -974,8 +974,8 @@ static MagickBooleanType GetPeakAbsoluteDistortion(const Image *image, y; status=MagickTrue; - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -1400,8 +1400,8 @@ MagickExport MagickBooleanType IsImagesEqual(Image *image, maximum_error=0.0; mean_error_per_pixel=0.0; mean_error=0.0; - image_view=AcquireCacheView(image); - reconstruct_view=AcquireCacheView(reconstruct_image); + image_view=AcquireVirtualCacheView(image,exception); + reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -1584,7 +1584,7 @@ MagickExport Image *SimilarityImage(Image *image,const Image *reference, */ status=MagickTrue; progress=0; - similarity_view=AcquireCacheView(similarity_image); + similarity_view=AcquireAuthenticCacheView(similarity_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/composite.c b/MagickCore/composite.c index f4ef1c65d..7468b4e70 100644 --- a/MagickCore/composite.c +++ b/MagickCore/composite.c @@ -331,8 +331,8 @@ static MagickBooleanType CompositeOverImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - composite_view=AcquireCacheView(composite_image); + composite_view=AcquireVirtualCacheView(composite_image,exception); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -604,8 +604,8 @@ MagickExport MagickBooleanType CompositeImage(Image *image, if ((y_offset+(ssize_t) composite_image->rows) >= (ssize_t) image->rows) break; status=MagickTrue; - image_view=AcquireCacheView(image); - composite_view=AcquireCacheView(composite_image); + composite_view=AcquireVirtualCacheView(composite_image,exception); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -777,8 +777,8 @@ MagickExport MagickBooleanType CompositeImage(Image *image, */ resample_filter=AcquireResampleFilter(image,exception); SetResampleFilter(resample_filter,CubicFilter); /* was blur*2 */ - destination_view=AcquireCacheView(destination_image); - composite_view=AcquireCacheView(composite_image); + composite_view=AcquireVirtualCacheView(composite_image,exception); + destination_view=AcquireAuthenticCacheView(destination_image,exception); for (y=0; y < (ssize_t) composite_image->rows; y++) { MagickBooleanType @@ -826,7 +826,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image, GetPixelRed(composite_image,p),blur.y2*QuantumScale* GetPixelGreen(composite_image,p)); (void) ResamplePixelColor(resample_filter,(double) x_offset+x, - (double) y_offset+y,&pixel); + (double) y_offset+y,&pixel,exception); SetPixelInfoPixel(destination_image,&pixel,q); p+=GetPixelChannels(composite_image); q+=GetPixelChannels(destination_image); @@ -950,9 +950,9 @@ MagickExport MagickBooleanType CompositeImage(Image *image, displacement/distortion map. -- Like a lens... */ GetPixelInfo(image,&pixel); - image_view=AcquireCacheView(image); - destination_view=AcquireCacheView(destination_image); - composite_view=AcquireCacheView(composite_image); + image_view=AcquireVirtualCacheView(image,exception); + composite_view=AcquireVirtualCacheView(composite_image,exception); + destination_view=AcquireAuthenticCacheView(destination_image,exception); for (y=0; y < (ssize_t) composite_image->rows; y++) { MagickBooleanType @@ -1125,8 +1125,8 @@ MagickExport MagickBooleanType CompositeImage(Image *image, status=MagickTrue; progress=0; midpoint=((MagickRealType) QuantumRange+1.0)/2; - image_view=AcquireCacheView(image); - composite_view=AcquireCacheView(composite_image); + composite_view=AcquireVirtualCacheView(composite_image,exception); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2372,8 +2372,8 @@ MagickExport MagickBooleanType TextureImage(Image *image,const Image *texture, Tile texture onto the image background (optimized). */ status=MagickTrue; - image_view=AcquireCacheView(image); - texture_view=AcquireCacheView(texture_image); + texture_view=AcquireVirtualCacheView(texture_image,exception); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) #endif diff --git a/MagickCore/compress.c b/MagickCore/compress.c index 7fc285357..3de4ae6e7 100644 --- a/MagickCore/compress.c +++ b/MagickCore/compress.c @@ -508,7 +508,7 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image, image->resolution.x=204.0; image->resolution.y=196.0; image->units=PixelsPerInchResolution; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; ((y < (ssize_t) image->rows) && (null_lines < 3)); ) { register Quantum diff --git a/MagickCore/decorate.c b/MagickCore/decorate.c index fde090785..3eafe541e 100644 --- a/MagickCore/decorate.c +++ b/MagickCore/decorate.c @@ -280,8 +280,8 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info, trough.alpha=matte.alpha; status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - frame_view=AcquireCacheView(frame_image); + image_view=AcquireVirtualCacheView(image,exception); + frame_view=AcquireAuthenticCacheView(frame_image,exception); height=(size_t) (frame_info->outer_bevel+(frame_info->y-bevel_width)+ frame_info->inner_bevel); if (height != 0) @@ -685,7 +685,7 @@ MagickExport MagickBooleanType RaiseImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(progress,status) #endif diff --git a/MagickCore/display.c b/MagickCore/display.c index e1cd6afab..6e22d6903 100644 --- a/MagickCore/display.c +++ b/MagickCore/display.c @@ -3733,7 +3733,7 @@ static MagickBooleanType XColorEditImage(Display *display, if ((x_offset >= (int) (*image)->columns) || (y_offset >= (int) (*image)->rows)) continue; - image_view=AcquireCacheView(*image); + image_view=AcquireAuthenticCacheView(*image,exception); switch (method) { case PointMethod: @@ -4335,7 +4335,7 @@ static MagickBooleanType XCompositeImage(Display *display, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); image->matte=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (int) image->rows; y++) { q=GetCacheViewAuthenticPixels(image_view,0,(ssize_t) y,image->columns,1, @@ -5356,7 +5356,7 @@ static MagickBooleanType XCropImage(Display *display, if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); image->matte=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (int) crop_info.height; y++) { q=GetCacheViewAuthenticPixels(image_view,crop_info.x,y+crop_info.y, @@ -10093,7 +10093,7 @@ static MagickBooleanType XMatteEditImage(Display *display, return(MagickFalse); if ((*image)->matte == MagickFalse) (void) SetImageAlphaChannel(*image,OpaqueAlphaChannel,exception); - image_view=AcquireCacheView(*image); + image_view=AcquireAuthenticCacheView(*image,exception); switch (method) { case PointMethod: @@ -13265,7 +13265,7 @@ static Image *XTileImage(Display *display,XResourceInfo *resource_info, */ 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); + image_view=AcquireAuthenticCacheView(image,exception); (void) GetOneCacheViewVirtualPixelInfo(image_view,0,0,&pixel,exception); for (i=0; i < (int) height; i++) { diff --git a/MagickCore/distort.c b/MagickCore/distort.c index f65a68e98..5f0a644b0 100644 --- a/MagickCore/distort.c +++ b/MagickCore/distort.c @@ -2311,7 +2311,7 @@ MagickExport Image *DistortImage(const Image *image,DistortImageMethod method, GetPixelInfo(distort_image,&zero); resample_filter=AcquireResampleFilterThreadSet(image, UndefinedVirtualPixelMethod,MagickFalse,exception); - distort_view=AcquireCacheView(distort_image); + distort_view=AcquireAuthenticCacheView(distort_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2711,7 +2711,8 @@ if ( d.x == 0.5 && d.y == 0.5 ) { } else { /* resample the source image to find its correct color */ - (void) ResamplePixelColor(resample_filter[id],s.x,s.y,&pixel); + (void) ResamplePixelColor(resample_filter[id],s.x,s.y,&pixel, + exception); /* if validity between 0.0 and 1.0 mix result with invalid pixel */ if ( validity < 1.0 ) { /* Do a blend of sample color and invalid pixel */ @@ -3034,7 +3035,7 @@ MagickExport Image *SparseColorImage(const Image *image, status=MagickTrue; progress=0; - sparse_view=AcquireCacheView(sparse_image); + sparse_view=AcquireAuthenticCacheView(sparse_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/draw.c b/MagickCore/draw.c index fd95e3b82..21008fbb2 100644 --- a/MagickCore/draw.c +++ b/MagickCore/draw.c @@ -1158,8 +1158,8 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image, GetPixelInfo(image,&zero); start=(ssize_t) ceil(edge.y1-0.5); stop=(ssize_t) ceil(edge.y2-0.5); - image_view=AcquireCacheView(image); - source_view=AcquireCacheView(source); + source_view=AcquireVirtualCacheView(source,exception); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) #endif @@ -3244,7 +3244,7 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image, bounding_box=gradient->bounding_box; status=MagickTrue; GetPixelInfo(image,&zero); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) #endif @@ -3844,7 +3844,7 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image, bounds.y2=bounds.y2 < 0.0 ? 0.0 : (size_t) floor(bounds.y2+0.5) >= image->rows ? (double) image->rows-1.0 : bounds.y2; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); if (primitive_info->coordinates == 1) { /* @@ -4144,7 +4144,7 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, status=MagickTrue; x=(ssize_t) ceil(primitive_info->point.x-0.5); y=(ssize_t) ceil(primitive_info->point.y-0.5); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); switch (primitive_info->primitive) { case PointPrimitive: diff --git a/MagickCore/effect.c b/MagickCore/effect.c index aea3959f2..1b6776907 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -290,9 +290,9 @@ MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - edge_view=AcquireCacheView(edge_image); - blur_view=AcquireCacheView(blur_image); + image_view=AcquireVirtualCacheView(image,exception); + edge_view=AcquireVirtualCacheView(edge_image,exception); + blur_view=AcquireAuthenticCacheView(blur_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -616,9 +616,9 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - edge_view=AcquireCacheView(edge_image); - sharp_view=AcquireCacheView(sharp_image); + image_view=AcquireVirtualCacheView(image,exception); + edge_view=AcquireVirtualCacheView(edge_image,exception); + sharp_view=AcquireAuthenticCacheView(sharp_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -946,8 +946,8 @@ MagickExport Image *BlurImage(const Image *image,const double radius, status=MagickTrue; progress=0; center=(ssize_t) GetPixelChannels(image)*(width/2L); - image_view=AcquireCacheView(image); - blur_view=AcquireCacheView(blur_image); + image_view=AcquireVirtualCacheView(image,exception); + blur_view=AcquireAuthenticCacheView(blur_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1075,8 +1075,8 @@ MagickExport Image *BlurImage(const Image *image,const double radius, Blur columns. */ center=(ssize_t) GetPixelChannels(blur_image)*(width/2L); - image_view=AcquireCacheView(blur_image); - blur_view=AcquireCacheView(blur_image); + image_view=AcquireVirtualCacheView(blur_image,exception); + blur_view=AcquireAuthenticCacheView(blur_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1424,8 +1424,8 @@ MagickExport Image *DespeckleImage(const Image *image,ExceptionInfo *exception) Reduce speckle in the image. */ status=MagickTrue; - image_view=AcquireCacheView(image); - despeckle_view=AcquireCacheView(despeckle_image); + image_view=AcquireVirtualCacheView(image,exception); + despeckle_view=AcquireAuthenticCacheView(despeckle_image,exception); for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -1945,9 +1945,9 @@ MagickExport Image *MotionBlurImage(const Image *image,const double radius, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - motion_view=AcquireCacheView(image); - blur_view=AcquireCacheView(blur_image); + image_view=AcquireVirtualCacheView(image,exception); + motion_view=AcquireVirtualCacheView(image,exception); + blur_view=AcquireAuthenticCacheView(blur_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2722,9 +2722,9 @@ MagickExport Image *RadialBlurImage(const Image *image,const double angle, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - radial_view=AcquireCacheView(image); - blur_view=AcquireCacheView(blur_image); + image_view=AcquireVirtualCacheView(image,exception); + radial_view=AcquireVirtualCacheView(image,exception); + blur_view=AcquireAuthenticCacheView(blur_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -3017,8 +3017,8 @@ MagickExport Image *SelectiveBlurImage(const Image *image,const double radius, progress=0; center=(ssize_t) (GetPixelChannels(image)*(image->columns+width)*(width/2L)+ GetPixelChannels(image)*(width/2L)); - image_view=AcquireCacheView(image); - blur_view=AcquireCacheView(blur_image); + image_view=AcquireVirtualCacheView(image,exception); + blur_view=AcquireAuthenticCacheView(blur_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -3270,8 +3270,8 @@ MagickExport Image *ShadeImage(const Image *image,const MagickBooleanType gray, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - shade_view=AcquireCacheView(shade_image); + image_view=AcquireVirtualCacheView(image,exception); + shade_view=AcquireAuthenticCacheView(shade_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -3596,8 +3596,8 @@ MagickExport Image *SpreadImage(const Image *image,const double radius, random_info=AcquireRandomInfoThreadSet(); concurrent=GetRandomSecretKey(random_info[0]) == ~0UL ? MagickTrue : MagickFalse; - image_view=AcquireCacheView(image); - spread_view=AcquireCacheView(spread_image); + image_view=AcquireVirtualCacheView(image,exception); + spread_view=AcquireAuthenticCacheView(spread_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,8) shared(progress,status) omp_concurrent(concurrent) #endif @@ -3735,8 +3735,8 @@ MagickExport Image *UnsharpMaskImage(const Image *image,const double radius, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - unsharp_view=AcquireCacheView(unsharp_image); + image_view=AcquireVirtualCacheView(image,exception); + unsharp_view=AcquireAuthenticCacheView(unsharp_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c index 3bdf487e1..0f85e582d 100644 --- a/MagickCore/enhance.c +++ b/MagickCore/enhance.c @@ -340,7 +340,7 @@ MagickExport MagickBooleanType ClutImage(Image *image,const Image *clut_image, status=MagickTrue; progress=0; adjust=(ssize_t) (clut_image->interpolate == IntegerInterpolatePixel ? 0 : 1); - clut_view=AcquireCacheView(clut_image); + clut_view=AcquireVirtualCacheView(clut_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) #endif @@ -352,7 +352,7 @@ MagickExport MagickBooleanType ClutImage(Image *image,const Image *clut_image, (clut_image->rows-adjust),clut_map+i,exception); } clut_view=DestroyCacheView(clut_view); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -743,7 +743,7 @@ MagickExport MagickBooleanType ColorDecisionListImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -898,7 +898,7 @@ MagickExport MagickBooleanType ContrastImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1053,7 +1053,7 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image, status=MagickTrue; (void) ResetMagickMemory(histogram,0,(MaxMap+1)*GetPixelChannels(image)* sizeof(*histogram)); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -1080,6 +1080,7 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image, p+=GetPixelChannels(image); } } + image_view=DestroyCacheView(image_view); /* Find the histogram boundaries by locating the black/white levels. */ @@ -1192,6 +1193,7 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image, */ status=MagickTrue; progress=0; + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1342,8 +1344,8 @@ MagickExport Image *EnhanceImage(const Image *image,ExceptionInfo *exception) */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - enhance_view=AcquireCacheView(enhance_image); + image_view=AcquireVirtualCacheView(image,exception); + enhance_view=AcquireAuthenticCacheView(enhance_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1543,7 +1545,7 @@ MagickExport MagickBooleanType EqualizeImage(Image *image, status=MagickTrue; (void) ResetMagickMemory(histogram,0,(MaxMap+1)*GetPixelChannels(image)* sizeof(*histogram)); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -1570,6 +1572,7 @@ MagickExport MagickBooleanType EqualizeImage(Image *image, p+=GetPixelChannels(image); } } + image_view=DestroyCacheView(image_view); /* Integrate the histogram to get the equalization map. */ @@ -1667,6 +1670,7 @@ MagickExport MagickBooleanType EqualizeImage(Image *image, Equalize image. */ progress=0; + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1840,7 +1844,7 @@ MagickExport MagickBooleanType GammaImage(Image *image,const double gamma, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2008,8 +2012,8 @@ MagickExport MagickBooleanType HaldClutImage(Image *image, cube_size=level*level; width=(double) hald_image->columns; GetPixelInfo(hald_image,&zero); - image_view=AcquireCacheView(image); - hald_view=AcquireCacheView(hald_image); + hald_view=AcquireVirtualCacheView(hald_image,exception); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2220,7 +2224,7 @@ MagickExport MagickBooleanType LevelImage(Image *image,const double black_point, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2386,7 +2390,7 @@ MagickExport MagickBooleanType LevelizeImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2658,7 +2662,7 @@ MagickExport MagickBooleanType LinearStretchImage(Image *image, Form histogram. */ (void) ResetMagickMemory(histogram,0,(MaxMap+1)*sizeof(*histogram)); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -2906,7 +2910,7 @@ MagickExport MagickBooleanType ModulateImage(Image *image,const char *modulate, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -3064,7 +3068,7 @@ MagickExport MagickBooleanType NegateImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); if (grayscale != MagickFalse) { #if defined(MAGICKCORE_OPENMP_SUPPORT) @@ -3406,7 +3410,7 @@ MagickExport MagickBooleanType SigmoidalContrastImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/feature.c b/MagickCore/feature.c index bba543820..f48a7ee2e 100644 --- a/MagickCore/feature.c +++ b/MagickCore/feature.c @@ -220,7 +220,7 @@ MagickExport ChannelFeatures *GetImageFeatures(const Image *image, grays[i].black=(~0U); } status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -394,7 +394,7 @@ MagickExport ChannelFeatures *GetImageFeatures(const Image *image, Initialize spatial dependence matrix. */ status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum diff --git a/MagickCore/fourier.c b/MagickCore/fourier.c index b53043a52..8beebffb4 100644 --- a/MagickCore/fourier.c +++ b/MagickCore/fourier.c @@ -287,8 +287,7 @@ static MagickBooleanType ForwardFourier(const FourierInfo *fourier_info, i++; } } - magnitude_view=AcquireCacheView(magnitude_image); - phase_view=AcquireCacheView(phase_image); + magnitude_view=AcquireAuthenticCacheView(magnitude_image,exception); i=0L; for (y=0L; y < (ssize_t) fourier_info->height; y++) { @@ -339,7 +338,9 @@ static MagickBooleanType ForwardFourier(const FourierInfo *fourier_info, if (status == MagickFalse) break; } + magnitude_view=DestroyCacheView(magnitude_view); i=0L; + phase_view=AcquireAuthenticCacheView(phase_image,exception); for (y=0L; y < (ssize_t) fourier_info->height; y++) { q=GetCacheViewAuthenticPixels(phase_view,0L,y,fourier_info->height,1UL, @@ -390,7 +391,6 @@ static MagickBooleanType ForwardFourier(const FourierInfo *fourier_info, break; } phase_view=DestroyCacheView(phase_view); - magnitude_view=DestroyCacheView(magnitude_view); phase_source=(double *) RelinquishMagickMemory(phase_source); magnitude_source=(double *) RelinquishMagickMemory(magnitude_source); return(status); @@ -436,7 +436,7 @@ static MagickBooleanType ForwardFourierTransform(FourierInfo *fourier_info, ResetMagickMemory(source,0,fourier_info->height*fourier_info->width* sizeof(*source)); i=0L; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0L; y < (ssize_t) fourier_info->height; y++) { p=GetCacheViewVirtualPixels(image_view,0L,y,fourier_info->width,1UL, @@ -852,7 +852,7 @@ static MagickBooleanType InverseFourier(FourierInfo *fourier_info, return(MagickFalse); } i=0L; - magnitude_view=AcquireCacheView(magnitude_image); + magnitude_view=AcquireVirtualCacheView(magnitude_image,exception); for (y=0L; y < (ssize_t) fourier_info->height; y++) { p=GetCacheViewVirtualPixels(magnitude_view,0L,y,fourier_info->width,1UL, @@ -895,7 +895,7 @@ static MagickBooleanType InverseFourier(FourierInfo *fourier_info, } } i=0L; - phase_view=AcquireCacheView(phase_image); + phase_view=AcquireVirtualCacheView(phase_image,exception); for (y=0L; y < (ssize_t) fourier_info->height; y++) { p=GetCacheViewVirtualPixels(phase_view,0,y,fourier_info->width,1, @@ -1052,7 +1052,7 @@ static MagickBooleanType InverseFourierTransform(FourierInfo *fourier_info, fftw_destroy_plan(fftw_c2r_plan); } i=0L; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0L; y < (ssize_t) fourier_info->height; y++) { if (y >= (ssize_t) image->rows) diff --git a/MagickCore/fx-private.h b/MagickCore/fx-private.h index 41c77f4a0..74c916d52 100644 --- a/MagickCore/fx-private.h +++ b/MagickCore/fx-private.h @@ -26,7 +26,7 @@ typedef struct _FxInfo FxInfo; extern MagickPrivate FxInfo - *AcquireFxInfo(const Image *,const char *), + *AcquireFxInfo(const Image *,const char *,ExceptionInfo *), *DestroyFxInfo(FxInfo *); extern MagickPrivate MagickBooleanType diff --git a/MagickCore/fx.c b/MagickCore/fx.c index c0f1f8e00..310855178 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -143,7 +143,8 @@ struct _FxInfo % % The format of the AcquireFxInfo method is: % -% FxInfo *AcquireFxInfo(Image *image,const char *expression) +% FxInfo *AcquireFxInfo(Image *image,const char *expression, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -151,8 +152,11 @@ struct _FxInfo % % o expression: the expression. % +% o exception: return any errors or warnings in this structure. +% */ -MagickPrivate FxInfo *AcquireFxInfo(const Image *image,const char *expression) +MagickPrivate FxInfo *AcquireFxInfo(const Image *image,const char *expression, + ExceptionInfo *exception) { char fx_op[2]; @@ -184,7 +188,7 @@ MagickPrivate FxInfo *AcquireFxInfo(const Image *image,const char *expression) next=GetFirstImageInList(fx_info->images); for ( ; next != (Image *) NULL; next=next->next) { - fx_info->view[i]=AcquireCacheView(next); + fx_info->view[i]=AcquireVirtualCacheView(next,exception); i++; } fx_info->random_info=AcquireRandomInfo(); @@ -302,8 +306,8 @@ MagickExport Image *AddNoiseImage(const Image *image,const NoiseType noise_type, random_info=AcquireRandomInfoThreadSet(); concurrent=GetRandomSecretKey(random_info[0]) == ~0UL ? MagickTrue : MagickFalse; - image_view=AcquireCacheView(image); - noise_view=AcquireCacheView(noise_image); + image_view=AcquireVirtualCacheView(image,exception); + noise_view=AcquireAuthenticCacheView(noise_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) omp_concurrent(concurrent) #endif @@ -468,8 +472,8 @@ MagickExport Image *BlueShiftImage(const Image *image,const double factor, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - shift_view=AcquireCacheView(shift_image); + image_view=AcquireVirtualCacheView(image,exception); + shift_view=AcquireAuthenticCacheView(shift_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -730,8 +734,8 @@ MagickExport Image *ColorizeImage(const Image *image,const char *blend, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - colorize_view=AcquireCacheView(colorize_image); + image_view=AcquireVirtualCacheView(image,exception); + colorize_view=AcquireAuthenticCacheView(colorize_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -936,8 +940,8 @@ MagickExport Image *ColorMatrixImage(const Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - color_view=AcquireCacheView(color_image); + image_view=AcquireVirtualCacheView(image,exception); + color_view=AcquireAuthenticCacheView(color_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2964,7 +2968,7 @@ static FxInfo **AcquireFxThreadSet(const Image *image,const char *expression, fx_expression=FileToString(expression+1,~0,exception); for (i=0; i < (ssize_t) number_threads; i++) { - fx_info[i]=AcquireFxInfo(image,fx_expression); + fx_info[i]=AcquireFxInfo(image,fx_expression,exception); if (fx_info[i] == (FxInfo *) NULL) return(DestroyFxThreadSet(fx_info)); (void) FxPreprocessExpression(fx_info[i],&alpha,fx_info[i]->exception); @@ -3030,8 +3034,8 @@ MagickExport Image *FxImage(const Image *image,const char *expression, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - fx_view=AcquireCacheView(fx_image); + image_view=AcquireVirtualCacheView(image,exception); + fx_view=AcquireAuthenticCacheView(fx_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -3228,8 +3232,8 @@ MagickExport Image *ImplodeImage(const Image *image,const double amount, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - implode_view=AcquireCacheView(implode_image); + image_view=AcquireVirtualCacheView(image,exception); + implode_view=AcquireAuthenticCacheView(implode_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -3472,8 +3476,8 @@ MagickExport Image *MorphImages(const Image *image, morph_images=DestroyImageList(morph_images); return((Image *) NULL); } - image_view=AcquireCacheView(morph_image); - morph_view=AcquireCacheView(morph_images); + image_view=AcquireVirtualCacheView(morph_image,exception); + morph_view=AcquireAuthenticCacheView(morph_images,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -3854,9 +3858,9 @@ MagickExport MagickBooleanType PlasmaImage(Image *image, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"..."); if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); - image_view=AcquireCacheView(image); - u_view=AcquireCacheView(image); - v_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); + u_view=AcquireVirtualCacheView(image,exception); + v_view=AcquireVirtualCacheView(image,exception); random_info=AcquireRandomInfo(); status=PlasmaImageProxy(image,image_view,u_view,v_view,random_info,segment, attenuate,depth,exception); @@ -4127,8 +4131,8 @@ MagickExport Image *SepiaToneImage(const Image *image,const double threshold, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - sepia_view=AcquireCacheView(sepia_image); + image_view=AcquireVirtualCacheView(image,exception); + sepia_view=AcquireAuthenticCacheView(sepia_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -4291,7 +4295,7 @@ MagickExport Image *ShadowImage(const Image *image,const double alpha, Shadow image. */ status=MagickTrue; - image_view=AcquireCacheView(border_image); + image_view=AcquireAuthenticCacheView(border_image,exception); for (y=0; y < (ssize_t) border_image->rows; y++) { PixelInfo @@ -4417,7 +4421,7 @@ MagickExport Image *SketchImage(const Image *image,const double radius, random_info=AcquireRandomInfoThreadSet(); concurrent=GetRandomSecretKey(random_info[0]) == ~0UL ? MagickTrue : MagickFalse; - random_view=AcquireCacheView(random_image); + random_view=AcquireAuthenticCacheView(random_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) omp_concurrent(concurrent) #endif @@ -4590,7 +4594,7 @@ MagickExport MagickBooleanType SolarizeImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -4756,8 +4760,8 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark, depth=stegano_image->depth; k=stegano_image->offset; status=MagickTrue; - watermark_view=AcquireCacheView(watermark); - stegano_view=AcquireCacheView(stegano_image); + watermark_view=AcquireVirtualCacheView(watermark,exception); + stegano_view=AcquireAuthenticCacheView(stegano_image,exception); 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++) @@ -5073,8 +5077,8 @@ MagickExport Image *SwirlImage(const Image *image,double degrees, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - swirl_view=AcquireCacheView(swirl_image); + image_view=AcquireVirtualCacheView(image,exception); + swirl_view=AcquireAuthenticCacheView(swirl_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -5306,8 +5310,8 @@ MagickExport Image *TintImage(const Image *image,const char *blend, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - tint_view=AcquireCacheView(tint_image); + image_view=AcquireVirtualCacheView(image,exception); + tint_view=AcquireAuthenticCacheView(tint_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -5607,8 +5611,8 @@ MagickExport Image *WaveImage(const Image *image,const double amplitude, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - wave_view=AcquireCacheView(wave_image); + image_view=AcquireVirtualCacheView(image,exception); + wave_view=AcquireAuthenticCacheView(wave_image,exception); (void) SetCacheViewVirtualPixelMethod(image_view, BackgroundVirtualPixelMethod); #if defined(MAGICKCORE_OPENMP_SUPPORT) diff --git a/MagickCore/histogram.c b/MagickCore/histogram.c index d846fe2ce..6a04abc62 100644 --- a/MagickCore/histogram.c +++ b/MagickCore/histogram.c @@ -224,7 +224,7 @@ static CubeInfo *ClassifyImageColors(const Image *image, } GetPixelInfo(image,&pixel); GetPixelInfo(image,&target); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); @@ -686,7 +686,7 @@ MagickExport MagickBooleanType IsHistogramImage(const Image *image, } GetPixelInfo(image,&pixel); GetPixelInfo(image,&target); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); @@ -846,7 +846,7 @@ MagickExport MagickBooleanType IsPaletteImage(const Image *image, } GetPixelInfo(image,&pixel); GetPixelInfo(image,&target); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); @@ -1292,7 +1292,7 @@ MagickExport Image *UniqueImageColors(const Image *image, unique_image=DestroyImage(unique_image); return((Image *) NULL); } - unique_view=AcquireCacheView(unique_image); + unique_view=AcquireAuthenticCacheView(unique_image,exception); UniqueColorsToImage(unique_image,unique_view,cube_info,cube_info->root, exception); unique_view=DestroyCacheView(unique_view); diff --git a/MagickCore/image-view.c b/MagickCore/image-view.c index 7b19052a4..4dba5afa1 100644 --- a/MagickCore/image-view.c +++ b/MagickCore/image-view.c @@ -694,14 +694,16 @@ MagickExport MagickBooleanType IsImageView(const ImageView *image_view) % % The format of the NewImageView method is: % -% ImageView *NewImageView(MagickCore *wand) +% ImageView *NewImageView(MagickCore *wand,ExceptionInfo *exception) % % A description of each parameter follows: % -% o wand: the wand. +% o image: the image. +% +% o exception: return any errors or warnings in this structure. % */ -MagickExport ImageView *NewImageView(Image *image) +MagickExport ImageView *NewImageView(Image *image,ExceptionInfo *exception) { ImageView *image_view; @@ -714,7 +716,7 @@ MagickExport ImageView *NewImageView(Image *image) (void) ResetMagickMemory(image_view,0,sizeof(*image_view)); image_view->description=ConstantString("ImageView"); image_view->image=image; - image_view->view=AcquireCacheView(image_view->image); + image_view->view=AcquireVirtualCacheView(image_view->image,exception); image_view->extent.width=image->columns; image_view->extent.height=image->rows; image_view->extent.x=0; @@ -743,7 +745,8 @@ MagickExport ImageView *NewImageView(Image *image) % The format of the NewImageViewRegion method is: % % ImageView *NewImageViewRegion(MagickCore *wand,const ssize_t x, -% const ssize_t y,const size_t width,const size_t height) +% const ssize_t y,const size_t width,const size_t height, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -752,9 +755,12 @@ MagickExport ImageView *NewImageView(Image *image) % o x,y,columns,rows: These values define the perimeter of a extent of % pixel_wands view. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport ImageView *NewImageViewRegion(Image *image,const ssize_t x, - const ssize_t y,const size_t width,const size_t height) + const ssize_t y,const size_t width,const size_t height, + ExceptionInfo *exception) { ImageView *image_view; @@ -766,7 +772,7 @@ MagickExport ImageView *NewImageViewRegion(Image *image,const ssize_t x, ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed"); (void) ResetMagickMemory(image_view,0,sizeof(*image_view)); image_view->description=ConstantString("ImageView"); - image_view->view=AcquireCacheView(image_view->image); + image_view->view=AcquireVirtualCacheView(image_view->image,exception); image_view->image=image; image_view->extent.width=width; image_view->extent.height=height; diff --git a/MagickCore/image-view.h b/MagickCore/image-view.h index 0cdb56c70..897b62839 100644 --- a/MagickCore/image-view.h +++ b/MagickCore/image-view.h @@ -49,9 +49,9 @@ extern MagickExport Image extern MagickExport ImageView *CloneImageView(const ImageView *), *DestroyImageView(ImageView *), - *NewImageView(Image *), + *NewImageView(Image *,ExceptionInfo *), *NewImageViewRegion(Image *,const ssize_t,const ssize_t,const size_t, - const size_t); + const size_t,ExceptionInfo *); extern MagickExport MagickBooleanType DuplexTransferImageViewIterator(ImageView *,ImageView *,ImageView *, diff --git a/MagickCore/image.c b/MagickCore/image.c index 36cdfb6a8..93ae4fe59 100644 --- a/MagickCore/image.c +++ b/MagickCore/image.c @@ -509,7 +509,7 @@ MagickExport Image *AppendImages(const Image *images, x_offset=0; y_offset=0; next=images; - append_view=AcquireCacheView(append_image); + append_view=AcquireAuthenticCacheView(append_image,exception); for (n=0; n < (MagickOffsetType) number_images; n++) { CacheView @@ -528,7 +528,7 @@ MagickExport Image *AppendImages(const Image *images, x_offset-=geometry.x; else y_offset-=geometry.y; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) #endif @@ -1299,8 +1299,8 @@ MagickExport Image *GetImageMask(const Image *image,ExceptionInfo *exception) status=MagickTrue; mask_image->colorspace=GRAYColorspace; mask_image->mask=MagickFalse; - image_view=AcquireCacheView(image); - mask_view=AcquireCacheView(mask_image); + image_view=AcquireVirtualCacheView(image,exception); + mask_view=AcquireAuthenticCacheView(mask_image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -1625,7 +1625,7 @@ MagickExport MagickBooleanType IsHighDynamicRangeImage(const Image *image, if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -1879,7 +1879,7 @@ MagickExport Image *NewMagickImage(const ImageInfo *image_info, image->fuzz=background->fuzz; image->depth=background->depth; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2150,7 +2150,7 @@ MagickExport MagickBooleanType SetImageAlphaChannel(Image *image, break; if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) break; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2228,7 +2228,7 @@ MagickExport MagickBooleanType SetImageAlphaChannel(Image *image, break; if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) break; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2337,7 +2337,7 @@ MagickExport MagickBooleanType SetImageBackgroundColor(Image *image, Set image background color. */ status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register Quantum @@ -2415,7 +2415,7 @@ MagickExport MagickBooleanType SetImageColor(Image *image, image->fuzz=color->fuzz; image->depth=color->depth; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2988,8 +2988,8 @@ MagickExport MagickBooleanType SetImageMask(Image *image,const Image *mask, } status=MagickTrue; image->mask=MagickTrue; - image_view=AcquireCacheView(image); - mask_view=AcquireCacheView(mask); + mask_view=AcquireVirtualCacheView(mask,exception); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -3068,7 +3068,7 @@ MagickExport MagickBooleanType SetImageAlpha(Image *image,const Quantum alpha, assert(image->signature == MagickSignature); image->matte=MagickTrue; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -3398,8 +3398,8 @@ static ssize_t SmushXGap(const Image *smush_image,const Image *images, GravityAdjustGeometry(left_image->columns,left_image->rows, left_image->gravity,&left_geometry); gap=right_image->columns; - left_view=AcquireCacheView(left_image); - right_view=AcquireCacheView(right_image); + left_view=AcquireVirtualCacheView(left_image,exception); + right_view=AcquireVirtualCacheView(right_image,exception); for (y=0; y < (ssize_t) smush_image->rows; y++) { for (x=(ssize_t) left_image->columns-1; x > 0; x--) @@ -3469,8 +3469,8 @@ static ssize_t SmushYGap(const Image *smush_image,const Image *images, GravityAdjustGeometry(top_image->columns,top_image->rows,top_image->gravity, &top_geometry); gap=bottom_image->rows; - top_view=AcquireCacheView(top_image); - bottom_view=AcquireCacheView(bottom_image); + top_view=AcquireVirtualCacheView(top_image,exception); + bottom_view=AcquireVirtualCacheView(bottom_image,exception); for (x=0; x < (ssize_t) smush_image->columns; x++) { for (y=(ssize_t) top_image->rows-1; y > 0; y--) @@ -3506,9 +3506,6 @@ MagickExport Image *SmushImages(const Image *images, { #define SmushImageTag "Smush/Image" - CacheView - *smush_view; - const Image *image; @@ -3589,7 +3586,6 @@ MagickExport Image *SmushImages(const Image *images, status=MagickTrue; x_offset=0; y_offset=0; - smush_view=AcquireCacheView(smush_image); for (n=0; n < (MagickOffsetType) number_images; n++) { SetGeometry(smush_image,&geometry); @@ -3625,7 +3621,6 @@ MagickExport Image *SmushImages(const Image *images, smush_image->columns=(size_t) x_offset; else smush_image->rows=(size_t) y_offset; - smush_view=DestroyCacheView(smush_view); if (status == MagickFalse) smush_image=DestroyImage(smush_image); return(smush_image); @@ -3727,7 +3722,7 @@ MagickExport MagickBooleanType SyncImage(Image *image,ExceptionInfo *exception) return(MagickFalse); range_exception=MagickFalse; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(range_exception,status) #endif diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h index c527ee88e..3adda1d24 100644 --- a/MagickCore/magick-config.h +++ b/MagickCore/magick-config.h @@ -12,7 +12,9 @@ /* #undef AUTOTRACE_DELEGATE */ /* Define if coders and filters are to be built as modules. */ -/* #undef BUILD_MODULES */ +#ifndef MAGICKCORE_BUILD_MODULES +#define MAGICKCORE_BUILD_MODULES 1 +#endif /* Define if you have the bzip2 library */ #ifndef MAGICKCORE_BZLIB_DELEGATE @@ -106,9 +108,7 @@ /* #undef GS_DELEGATE */ /* Define if you have GVC library */ -#ifndef MAGICKCORE_GVC_DELEGATE -#define MAGICKCORE_GVC_DELEGATE 1 -#endif +/* #undef GVC_DELEGATE */ /* Define to 1 if you have the `acosh' function. */ #ifndef MAGICKCORE_HAVE_ACOSH @@ -219,7 +219,9 @@ #endif /* Define to 1 if you have the header file. */ -/* #undef HAVE_CL_CL_H */ +#ifndef MAGICKCORE_HAVE_CL_CL_H +#define MAGICKCORE_HAVE_CL_CL_H 1 +#endif /* Define to 1 if you have the header file. */ #ifndef MAGICKCORE_HAVE_COMPLEX_H @@ -1188,7 +1190,9 @@ #endif /* Define if you have JBIG library */ -/* #undef JBIG_DELEGATE */ +#ifndef MAGICKCORE_JBIG_DELEGATE +#define MAGICKCORE_JBIG_DELEGATE 1 +#endif /* Define if you have JPEG version 2 "Jasper" library */ #ifndef MAGICKCORE_JP2_DELEGATE @@ -1229,7 +1233,7 @@ /* Define to the system default library search path. */ #ifndef MAGICKCORE_LT_DLSEARCH_PATH -#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/atlas:/usr/lib/llvm:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/nvidia:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib64/tcl8.5:/usr/lib64/tracker-0.14:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2" +#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/atlas:/usr/local/cuda/lib64:/usr/local/cuda/lib:/usr/lib/llvm:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/nvidia:/usr/lib64/tracker-0.14:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2" #endif /* The archive extension */ @@ -1263,9 +1267,7 @@ /* #undef LT_SHARED_EXT */ /* Define if you have LZMA library */ -#ifndef MAGICKCORE_LZMA_DELEGATE -#define MAGICKCORE_LZMA_DELEGATE 1 -#endif +/* #undef LZMA_DELEGATE */ /* Define to prepend to default font search path. */ /* #undef MAGICK_FONT_PATH */ @@ -1283,7 +1285,9 @@ /* #undef NO_MINUS_C_MINUS_O */ /* Define if you have OPENEXR library */ -/* #undef OPENEXR_DELEGATE */ +#ifndef MAGICKCORE_OPENEXR_DELEGATE +#define MAGICKCORE_OPENEXR_DELEGATE 1 +#endif /* Name of package */ #ifndef MAGICKCORE_PACKAGE @@ -1353,7 +1357,9 @@ #endif /* Define if you have RSVG library */ -/* #undef RSVG_DELEGATE */ +#ifndef MAGICKCORE_RSVG_DELEGATE +#define MAGICKCORE_RSVG_DELEGATE 1 +#endif /* Define to the type of arg 1 for `select'. */ #ifndef MAGICKCORE_SELECT_TYPE_ARG1 @@ -1579,7 +1585,9 @@ /* #undef _MINIX */ /* Define this for the OpenCL Accelerator */ -/* #undef _OPENCL */ +#ifndef MAGICKCORE__OPENCL +#define MAGICKCORE__OPENCL 1 +#endif /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c index 485a84fa1..c08c136ea 100644 --- a/MagickCore/morphology.c +++ b/MagickCore/morphology.c @@ -2536,8 +2536,8 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image, changed=0; progress=0; - image_view=AcquireCacheView(image); - morphology_view=AcquireCacheView(morphology_image); + image_view=AcquireVirtualCacheView(image,exception); + morphology_view=AcquireAuthenticCacheView(morphology_image,exception); virt_width=image->columns+kernel->width-1; /* Some methods (including convolve) needs use a reflected kernel. @@ -3368,8 +3368,8 @@ static ssize_t MorphologyPrimitiveDirect(Image *image, /* DO NOT THREAD THIS CODE! */ /* two views into same image (virtual, and actual) */ - virt_view=AcquireCacheView(image); - auth_view=AcquireCacheView(image); + virt_view=AcquireVirtualCacheView(image,exception); + auth_view=AcquireAuthenticCacheView(image,exception); virt_width=image->columns+kernel->width-1; for (y=0; y < (ssize_t) image->rows; y++) diff --git a/MagickCore/paint.c b/MagickCore/paint.c index ac33f9277..8c54a1353 100644 --- a/MagickCore/paint.c +++ b/MagickCore/paint.c @@ -203,8 +203,8 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, PushSegmentStack(y,x,x,1); PushSegmentStack(y+1,x,x,-1); GetPixelInfo(image,&pixel); - image_view=AcquireCacheView(image); - floodplane_view=AcquireCacheView(floodplane_image); + image_view=AcquireVirtualCacheView(image,exception); + floodplane_view=AcquireAuthenticCacheView(floodplane_image,exception); while (s > segment_stack) { register const Quantum @@ -587,8 +587,8 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, progress=0; center=(ssize_t) GetPixelChannels(image)*(image->columns+width)*(width/2L)+ GetPixelChannels(image)*(width/2L); - image_view=AcquireCacheView(image); - paint_view=AcquireCacheView(paint_image); + image_view=AcquireVirtualCacheView(image,exception); + paint_view=AcquireAuthenticCacheView(paint_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -788,7 +788,7 @@ MagickExport MagickBooleanType OpaquePaintImage(Image *image, status=MagickTrue; progress=0; GetPixelInfo(image,&zero); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -914,7 +914,7 @@ MagickExport MagickBooleanType TransparentPaintImage(Image *image, status=MagickTrue; progress=0; GetPixelInfo(image,&zero); - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1040,7 +1040,7 @@ MagickExport MagickBooleanType TransparentPaintImageChroma(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c index 9d736ba10..dc46381d0 100644 --- a/MagickCore/pixel.c +++ b/MagickCore/pixel.c @@ -4189,7 +4189,7 @@ MagickExport MagickBooleanType InterpolatePixelChannel(const Image *image, excerpt_image=DestroyImage(excerpt_image); if (filter_image == (Image *) NULL) break; - filter_view=AcquireCacheView(filter_image); + filter_view=AcquireVirtualCacheView(filter_image,exception); p=GetCacheViewVirtualPixels(filter_view,0,0,1,1,exception); if (p == (const Quantum *) NULL) status=MagickFalse; @@ -4638,7 +4638,7 @@ MagickExport MagickBooleanType InterpolatePixelChannels(const Image *source, excerpt_source=DestroyImage(excerpt_source); if (filter_source == (Image *) NULL) continue; - filter_view=AcquireCacheView(filter_source); + filter_view=AcquireVirtualCacheView(filter_source,exception); p=GetCacheViewVirtualPixels(filter_view,0,0,1,1,exception); if (p == (const Quantum *) NULL) status=MagickFalse; @@ -5166,7 +5166,7 @@ MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image, excerpt_image=DestroyImage(excerpt_image); if (filter_image == (Image *) NULL) break; - filter_view=AcquireCacheView(filter_image); + filter_view=AcquireVirtualCacheView(filter_image,exception); p=GetCacheViewVirtualPixels(filter_view,0,0,1,1,exception); if (p != (const Quantum *) NULL) GetPixelInfoPixel(image,p,pixel); diff --git a/MagickCore/prepress.c b/MagickCore/prepress.c index fe79d4e1e..ed4ba4ccf 100644 --- a/MagickCore/prepress.c +++ b/MagickCore/prepress.c @@ -108,7 +108,7 @@ MagickExport double GetImageTotalInkDensity(Image *image, } status=MagickTrue; total_ink_density=0.0; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif diff --git a/MagickCore/profile.c b/MagickCore/profile.c index b69baf2b5..2b8b4e885 100644 --- a/MagickCore/profile.c +++ b/MagickCore/profile.c @@ -6038,7 +6038,7 @@ MagickExport MagickBooleanType ProfileImage(Image *image,const char *name, (void) SetImageColorspace(image,target_colorspace,exception); status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif diff --git a/MagickCore/property.c b/MagickCore/property.c index fd947edc8..51a04aca8 100644 --- a/MagickCore/property.c +++ b/MagickCore/property.c @@ -2049,7 +2049,7 @@ MagickExport const char *GetImageProperty(const Image *image, { if (LocaleNCompare("fx:",property,3) == 0) { - fx_info=AcquireFxInfo(image,property+3); + fx_info=AcquireFxInfo(image,property+3,exception); status=FxEvaluateChannelExpression(fx_info,IntensityPixelChannel,0,0, &alpha,exception); fx_info=DestroyFxInfo(fx_info); @@ -2095,7 +2095,7 @@ MagickExport const char *GetImageProperty(const Image *image, pixel; GetPixelInfo(image,&pixel); - fx_info=AcquireFxInfo(image,property+6); + fx_info=AcquireFxInfo(image,property+6,exception); status=FxEvaluateChannelExpression(fx_info,RedPixelChannel,0,0, &alpha,exception); pixel.red=(MagickRealType) QuantumRange*alpha; diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c index 1c657456f..3283b5253 100644 --- a/MagickCore/quantize.c +++ b/MagickCore/quantize.c @@ -535,14 +535,11 @@ static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info, CacheView *image_view; - ExceptionInfo - *exception; - MagickBooleanType status; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -811,7 +808,7 @@ static MagickBooleanType ClassifyImageColors(CubeInfo *cube_info, midpoint.blue=(MagickRealType) QuantumRange/2.0; midpoint.alpha=(MagickRealType) QuantumRange/2.0; error.alpha=0.0; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -1499,7 +1496,7 @@ static MagickBooleanType FloydSteinbergDither(Image *image,CubeInfo *cube_info, if (pixels == (RealPixelInfo **) NULL) return(MagickFalse); status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { const int @@ -1962,7 +1959,7 @@ static MagickBooleanType DitherImage(Image *image,CubeInfo *cube_info, depth++; cube_info->offset=0; cube_info->span=(MagickSizeType) image->columns*image->rows; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); if (depth > 1) Riemersma(image,image_view,cube_info,depth-1,NorthGravity,exception); status=RiemersmaDither(image,image_view,cube_info,ForgetGravity,exception); @@ -2222,7 +2219,7 @@ MagickExport MagickBooleanType GetImageQuantizeError(Image *image, maximum_error=0.0; mean_error_per_pixel=0.0; mean_error=0.0; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -2405,7 +2402,7 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2680,7 +2677,7 @@ static MagickBooleanType DirectToColormapImage(Image *image, if (image->colors != number_colors) return(MagickFalse); i=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { MagickBooleanType @@ -3301,7 +3298,7 @@ static MagickBooleanType SetGrayscaleImage(Image *image, image->filename); image->colors=0; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -3378,7 +3375,7 @@ static MagickBooleanType SetGrayscaleImage(Image *image, image->colormap=(PixelInfo *) RelinquishMagickMemory(image->colormap); image->colormap=colormap; status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif diff --git a/MagickCore/resample.c b/MagickCore/resample.c index 055c9bfb6..d67fd991e 100644 --- a/MagickCore/resample.c +++ b/MagickCore/resample.c @@ -223,7 +223,7 @@ MagickExport ResampleFilter *AcquireResampleFilter(const Image *image, resample_filter->exception=exception; resample_filter->image=ReferenceImage((Image *) image); - resample_filter->view=AcquireCacheView(resample_filter->image); + resample_filter->view=AcquireVirtualCacheView(resample_filter->image,exception); resample_filter->debug=IsEventLogging(); resample_filter->signature=MagickSignature; @@ -301,7 +301,8 @@ MagickExport ResampleFilter *DestroyResampleFilter( % The format of the ResamplePixelColor method is: % % MagickBooleanType ResamplePixelColor(ResampleFilter *resample_filter, -% const double u0,const double v0,PixelInfo *pixel) +% const double u0,const double v0,PixelInfo *pixel, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -312,10 +313,12 @@ MagickExport ResampleFilter *DestroyResampleFilter( % % o pixel: the resampled pixel is returned here. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType ResamplePixelColor( ResampleFilter *resample_filter,const double u0,const double v0, - PixelInfo *pixel) + PixelInfo *pixel,ExceptionInfo *exception) { MagickBooleanType status; @@ -474,7 +477,7 @@ MagickExport MagickBooleanType ResamplePixelColor( *pixel=resample_filter->average_pixel; /* FAILED */ break; } - average_view=AcquireCacheView(average_image); + average_view=AcquireVirtualCacheView(average_image,exception); pixels=GetCacheViewVirtualPixels(average_view,0,0,1,1, resample_filter->exception); if (pixels == (const Quantum *) NULL) { diff --git a/MagickCore/resample.h b/MagickCore/resample.h index 253a0f801..00712a495 100644 --- a/MagickCore/resample.h +++ b/MagickCore/resample.h @@ -73,7 +73,7 @@ typedef struct _ResampleFilter extern MagickExport MagickBooleanType ResamplePixelColor(ResampleFilter *,const double,const double, - PixelInfo *), + PixelInfo *,ExceptionInfo *), SetResampleFilterInterpolateMethod(ResampleFilter *, const PixelInterpolateMethod), SetResampleFilterVirtualPixelMethod(ResampleFilter *, diff --git a/MagickCore/resize.c b/MagickCore/resize.c index a547ef14e..f4eda5c37 100644 --- a/MagickCore/resize.c +++ b/MagickCore/resize.c @@ -1574,8 +1574,8 @@ MagickExport Image *InterpolativeResizeImage(const Image *image, } status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - resize_view=AcquireCacheView(resize_image); + image_view=AcquireVirtualCacheView(image,exception); + resize_view=AcquireAuthenticCacheView(resize_image,exception); scale.x=(double) image->columns/resize_image->columns; scale.y=(double) image->rows/resize_image->rows; #if defined(MAGICKCORE_OPENMP_SUPPORT) @@ -1767,7 +1767,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, return((Image *) NULL); status=MagickTrue; q=pixels; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -1818,7 +1818,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, rescale_image=DestroyImage(rescale_image); return((Image *) NULL); } - rescale_view=AcquireCacheView(rescale_image); + rescale_view=AcquireAuthenticCacheView(rescale_image,exception); (void) lqr_carver_scan_reset(carver); while (lqr_carver_scan_ext(carver,&x_offset,&y_offset,(void **) &packet) != 0) { @@ -2184,8 +2184,8 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, } status=MagickTrue; scale=1.0/scale; - image_view=AcquireCacheView(image); - resize_view=AcquireCacheView(resize_image); + image_view=AcquireVirtualCacheView(image,exception); + resize_view=AcquireAuthenticCacheView(resize_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2401,8 +2401,8 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, status=MagickTrue; scale=1.0/scale; (void) ResetMagickMemory(&zero,0,sizeof(zero)); - image_view=AcquireCacheView(image); - resize_view=AcquireCacheView(resize_image); + image_view=AcquireVirtualCacheView(image,exception); + resize_view=AcquireAuthenticCacheView(resize_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -2755,8 +2755,8 @@ MagickExport Image *SampleImage(const Image *image,const size_t columns, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - sample_view=AcquireCacheView(sample_image); + image_view=AcquireVirtualCacheView(image,exception); + sample_view=AcquireAuthenticCacheView(sample_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(progress,status) #endif @@ -2968,8 +2968,8 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, for (i=0; i < (ssize_t) (GetPixelChannels(image)*image->columns); i++) y_vector[i]=0.0; n=0; - image_view=AcquireCacheView(image); - scale_view=AcquireCacheView(scale_image); + image_view=AcquireVirtualCacheView(image,exception); + scale_view=AcquireAuthenticCacheView(scale_image,exception); for (y=0; y < (ssize_t) scale_image->rows; y++) { register const Quantum diff --git a/MagickCore/segment.c b/MagickCore/segment.c index ca2890ef6..a3b0c6811 100644 --- a/MagickCore/segment.c +++ b/MagickCore/segment.c @@ -352,7 +352,7 @@ static MagickBooleanType Classify(Image *image,short **extrema, status=MagickTrue; count=0; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -528,7 +528,7 @@ static MagickBooleanType Classify(Image *image,short **extrema, /* Do course grain classes. */ - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/shear.c b/MagickCore/shear.c index 024de5c54..488803c21 100644 --- a/MagickCore/shear.c +++ b/MagickCore/shear.c @@ -650,7 +650,7 @@ static MagickBooleanType RadonTransform(const Image *image, bits[i]=(unsigned short) count; } status=MagickTrue; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) #endif @@ -776,7 +776,7 @@ static void GetImageBackgroundColor(Image *image,const ssize_t offset, return; GetPixelInfo(image,&background); count=0.0; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register const Quantum @@ -998,8 +998,8 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - rotate_view=AcquireCacheView(rotate_image); + image_view=AcquireVirtualCacheView(image,exception); + rotate_view=AcquireAuthenticCacheView(rotate_image,exception); switch (rotations) { case 0: @@ -1443,7 +1443,7 @@ static MagickBooleanType XShearImage(Image *image,const MagickRealType degrees, status=MagickTrue; background=image->background_color; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1658,7 +1658,7 @@ static MagickBooleanType YShearImage(Image *image,const MagickRealType degrees, status=MagickTrue; progress=0; background=image->background_color; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/signature.c b/MagickCore/signature.c index 4489d4391..31ddd1c5b 100644 --- a/MagickCore/signature.c +++ b/MagickCore/signature.c @@ -506,7 +506,7 @@ MagickExport MagickBooleanType SignatureImage(Image *image, signature=AcquireStringInfo(image->columns*GetPixelChannels(image)* sizeof(pixel)); pixels=GetStringInfoDatum(signature); - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (ssize_t) image->rows; y++) { register ssize_t diff --git a/MagickCore/statistic.c b/MagickCore/statistic.c index 3ccb07cef..087cb494a 100644 --- a/MagickCore/statistic.c +++ b/MagickCore/statistic.c @@ -499,7 +499,7 @@ MagickExport Image *EvaluateImages(const Image *images, random_info=AcquireRandomInfoThreadSet(); concurrent=GetRandomSecretKey(random_info[0]) == ~0UL ? MagickTrue : MagickFalse; - evaluate_view=AcquireCacheView(evaluate_image); + evaluate_view=AcquireAuthenticCacheView(evaluate_image,exception); if (op == MedianEvaluateOperator) { #if defined(MAGICKCORE_OPENMP_SUPPORT) @@ -553,7 +553,7 @@ MagickExport Image *EvaluateImages(const Image *images, register ssize_t i; - image_view=AcquireCacheView(next); + image_view=AcquireVirtualCacheView(next,exception); p=GetCacheViewVirtualPixels(image_view,x,y,1,1,exception); if (p == (const Quantum *) NULL) { @@ -655,7 +655,7 @@ MagickExport Image *EvaluateImages(const Image *images, register const Quantum *p; - image_view=AcquireCacheView(next); + image_view=AcquireVirtualCacheView(next,exception); p=GetCacheViewVirtualPixels(image_view,0,y,next->columns,1,exception); if (p == (const Quantum *) NULL) { @@ -812,7 +812,7 @@ MagickExport MagickBooleanType EvaluateImage(Image *image, random_info=AcquireRandomInfoThreadSet(); concurrent=GetRandomSecretKey(random_info[0]) == ~0UL ? MagickTrue : MagickFalse; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) omp_concurrent(concurrent) #endif @@ -1044,7 +1044,7 @@ MagickExport MagickBooleanType FunctionImage(Image *image, return(MagickFalse); status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1307,7 +1307,7 @@ MagickExport MagickBooleanType GetImageKurtosis(const Image *image, sum_squares=0.0; sum_cubes=0.0; sum_fourth_power=0.0; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) #endif @@ -1435,7 +1435,7 @@ MagickExport MagickBooleanType GetImageRange(const Image *image,double *minima, status=MagickTrue; *maxima=(-MagickHuge); *minima=MagickHuge; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) #endif @@ -2255,8 +2255,8 @@ MagickExport Image *StatisticImage(const Image *image,const StatisticType type, (MagickMax(height,1)/2L)+GetPixelChannels(image)*(MagickMax(width,1)/2L); status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - statistic_view=AcquireCacheView(statistic_image); + image_view=AcquireVirtualCacheView(image,exception); + statistic_view=AcquireAuthenticCacheView(statistic_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c index 76a5dd903..19243fa13 100644 --- a/MagickCore/threshold.c +++ b/MagickCore/threshold.c @@ -202,8 +202,8 @@ MagickExport Image *AdaptiveThresholdImage(const Image *image, status=MagickTrue; progress=0; number_pixels=(MagickSizeType) width*height; - image_view=AcquireCacheView(image); - threshold_view=AcquireCacheView(threshold_image); + image_view=AcquireVirtualCacheView(image,exception); + threshold_view=AcquireAuthenticCacheView(threshold_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -389,7 +389,7 @@ MagickExport MagickBooleanType BilevelImage(Image *image,const double threshold, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,8) shared(progress,status) #endif @@ -547,7 +547,7 @@ MagickExport MagickBooleanType BlackThresholdImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,8) shared(progress,status) #endif @@ -689,7 +689,7 @@ MagickExport MagickBooleanType ClampImage(Image *image,ExceptionInfo *exception) */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,8) shared(progress,status) #endif @@ -1312,7 +1312,7 @@ MagickExport MagickBooleanType OrderedPosterizeImage(Image *image, return(MagickFalse); status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,8) shared(progress,status) #endif @@ -1490,7 +1490,7 @@ MagickExport MagickBooleanType RandomThresholdImage(Image *image, random_info=AcquireRandomInfoThreadSet(); concurrent=GetRandomSecretKey(random_info[0]) == ~0UL ? MagickTrue : MagickFalse; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,8) shared(progress,status) omp_concurrent(concurrent) #endif @@ -1664,7 +1664,7 @@ MagickExport MagickBooleanType WhiteThresholdImage(Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,8) shared(progress,status) #endif diff --git a/MagickCore/transform.c b/MagickCore/transform.c index d0bdeb10a..190b18efd 100644 --- a/MagickCore/transform.c +++ b/MagickCore/transform.c @@ -157,8 +157,8 @@ MagickExport Image *ChopImage(const Image *image,const RectangleInfo *chop_info, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - chop_view=AcquireCacheView(chop_image); + image_view=AcquireVirtualCacheView(image,exception); + chop_view=AcquireAuthenticCacheView(chop_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(progress,status) #endif @@ -369,8 +369,8 @@ MagickExport Image *ConsolidateCMYKImages(const Image *images, (void) SetImageColorspace(cmyk_image,CMYKColorspace,exception); for (i=0; i < 4; i++) { - image_view=AcquireCacheView(images); - cmyk_view=AcquireCacheView(cmyk_image); + image_view=AcquireVirtualCacheView(images,exception); + cmyk_view=AcquireAuthenticCacheView(cmyk_image,exception); for (y=0; y < (ssize_t) images->rows; y++) { register const Quantum @@ -582,8 +582,8 @@ MagickExport Image *CropImage(const Image *image,const RectangleInfo *geometry, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - crop_view=AcquireCacheView(crop_image); + image_view=AcquireVirtualCacheView(image,exception); + crop_view=AcquireAuthenticCacheView(crop_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(progress,status) #endif @@ -943,8 +943,8 @@ MagickExport Image *ExcerptImage(const Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - excerpt_view=AcquireCacheView(excerpt_image); + image_view=AcquireVirtualCacheView(image,exception); + excerpt_view=AcquireAuthenticCacheView(excerpt_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -1150,8 +1150,8 @@ MagickExport Image *FlipImage(const Image *image,ExceptionInfo *exception) status=MagickTrue; progress=0; page=image->page; - image_view=AcquireCacheView(image); - flip_view=AcquireCacheView(flip_image); + image_view=AcquireVirtualCacheView(image,exception); + flip_view=AcquireAuthenticCacheView(flip_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(progress,status) #endif @@ -1296,8 +1296,8 @@ MagickExport Image *FlopImage(const Image *image,ExceptionInfo *exception) status=MagickTrue; progress=0; page=image->page; - image_view=AcquireCacheView(image); - flop_view=AcquireCacheView(flop_image); + image_view=AcquireVirtualCacheView(image,exception); + flop_view=AcquireAuthenticCacheView(flop_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(progress,status) #endif @@ -1425,8 +1425,8 @@ static inline MagickBooleanType CopyImageRegion(Image *destination, y; status=MagickTrue; - source_view=AcquireCacheView(source); - destination_view=AcquireCacheView(destination); + source_view=AcquireVirtualCacheView(source,exception); + destination_view=AcquireAuthenticCacheView(destination,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) #endif @@ -1754,8 +1754,8 @@ MagickExport Image *SpliceImage(const Image *image, */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - splice_view=AcquireCacheView(splice_image); + image_view=AcquireVirtualCacheView(image,exception); + splice_view=AcquireAuthenticCacheView(splice_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2209,8 +2209,8 @@ MagickExport Image *TransposeImage(const Image *image,ExceptionInfo *exception) */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - transpose_view=AcquireCacheView(transpose_image); + image_view=AcquireVirtualCacheView(image,exception); + transpose_view=AcquireAuthenticCacheView(transpose_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif @@ -2358,8 +2358,8 @@ MagickExport Image *TransverseImage(const Image *image,ExceptionInfo *exception) */ status=MagickTrue; progress=0; - image_view=AcquireCacheView(image); - transverse_view=AcquireCacheView(transverse_image); + image_view=AcquireVirtualCacheView(image,exception); + transverse_view=AcquireAuthenticCacheView(transverse_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(progress,status) #endif diff --git a/MagickCore/version.h b/MagickCore/version.h index f9935e7e6..8b0b0dc2d 100644 --- a/MagickCore/version.h +++ b/MagickCore/version.h @@ -27,14 +27,14 @@ extern "C" { */ #define MagickPackageName "ImageMagick" #define MagickCopyright "Copyright (C) 1999-2012 ImageMagick Studio LLC" -#define MagickSVNRevision "7561" +#define MagickSVNRevision "" #define MagickLibVersion 0x700 #define MagickLibVersionText "7.0.0" #define MagickLibVersionNumber 7,0,0 #define MagickLibAddendum "-0" #define MagickLibInterface 7 #define MagickLibMinInterface 7 -#define MagickReleaseDate "2012-04-19" +#define MagickReleaseDate "2012-04-20" #define MagickChangeDate "20110801" #define MagickAuthoritativeURL "http://www.imagemagick.org" #if defined(MAGICKCORE_OPENMP_SUPPORT) diff --git a/MagickCore/xwindow.c b/MagickCore/xwindow.c index fb55ead3f..a4cb182b7 100644 --- a/MagickCore/xwindow.c +++ b/MagickCore/xwindow.c @@ -561,7 +561,7 @@ MagickPrivate MagickBooleanType XAnnotateImage(Display *display, (ssize_t) y,&annotate_image->background_color,exception); if (annotate_info->stencil == ForegroundStencil) annotate_image->matte=MagickTrue; - annotate_view=AcquireCacheView(annotate_image); + annotate_view=AcquireAuthenticCacheView(annotate_image,exception); for (y=0; y < (int) annotate_image->rows; y++) { register int @@ -2227,7 +2227,7 @@ static void XDitherImage(Image *image,XImage *ximage,ExceptionInfo *exception) i=0; j=0; q=ximage->data; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); for (y=0; y < (int) image->rows; y++) { p=GetCacheViewVirtualPixels(image_view,0,(ssize_t) y,image->columns,1, @@ -2484,7 +2484,7 @@ MagickPrivate MagickBooleanType XDrawImage(Display *display, if (SetImageStorageClass(draw_image,DirectClass,exception) == MagickFalse) return(MagickFalse); draw_image->matte=MagickTrue; - draw_view=AcquireCacheView(draw_image); + draw_view=AcquireAuthenticCacheView(draw_image,exception); for (y=0; y < (int) draw_image->rows; y++) { register int @@ -2610,7 +2610,7 @@ MagickPrivate MagickBooleanType XDrawImage(Display *display, /* Composite text onto the image. */ - draw_view=AcquireCacheView(draw_image); + draw_view=AcquireAuthenticCacheView(draw_image,exception); for (y=0; y < (int) draw_image->rows; y++) { register int @@ -4358,7 +4358,7 @@ static Image *XGetWindowImage(Display *display,const Window window, composite_image->storage_class=PseudoClass; composite_image->columns=(size_t) ximage->width; composite_image->rows=(size_t) ximage->height; - composite_view=AcquireCacheView(composite_image); + composite_view=AcquireAuthenticCacheView(composite_image,exception); switch (composite_image->storage_class) { case DirectClass: @@ -5946,7 +5946,7 @@ static void XMakeImageLSBFirst(const XResourceInfo *resource_info, pixels=window->pixel_info->pixels; q=(unsigned char *) ximage->data; x=0; - canvas_view=AcquireCacheView(canvas); + canvas_view=AcquireVirtualCacheView(canvas,exception); if (ximage->format == XYBitmap) { register unsigned short @@ -6578,7 +6578,7 @@ static void XMakeImageMSBFirst(const XResourceInfo *resource_info, pixels=window->pixel_info->pixels; q=(unsigned char *) ximage->data; x=0; - canvas_view=AcquireCacheView(canvas); + canvas_view=AcquireVirtualCacheView(canvas,exception); if (ximage->format == XYBitmap) { register unsigned short @@ -8005,7 +8005,7 @@ MagickPrivate void XMakeStandardColormap(Display *display, diversity[i].index=(unsigned short) i; diversity[i].count=0; } - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); for (y=0; y < (int) image->rows; y++) { register int diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c index 8650d7e60..7bb0b235a 100644 --- a/MagickWand/magick-image.c +++ b/MagickWand/magick-image.c @@ -5266,7 +5266,7 @@ WandExport MagickBooleanType MagickGetImagePixelColor(MagickWand *wand, if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - image_view=AcquireCacheView(wand->images); + image_view=AcquireVirtualCacheView(wand->images,wand->exception); p=GetCacheViewVirtualPixels(image_view,x,y,1,1,wand->exception); if (p == (const Quantum *) NULL) { diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index 30228373c..988a30e3b 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -1113,7 +1113,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, break; if (SetImageStorageClass(mask_image,DirectClass,exception) == MagickFalse) return(MagickFalse); - mask_view=AcquireCacheView(mask_image); + mask_view=AcquireAuthenticCacheView(mask_image,exception); for (y=0; y < (ssize_t) mask_image->rows; y++) { q=GetCacheViewAuthenticPixels(mask_view,0,y,mask_image->columns,1, diff --git a/MagickWand/operation.c b/MagickWand/operation.c index 70a1f5a56..5488e8b2d 100644 --- a/MagickWand/operation.c +++ b/MagickWand/operation.c @@ -1986,7 +1986,7 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, break; /* Create a write mask from cli_wand mask image */ /* FUTURE: use Alpha operations instead and create a Grey Image */ - mask_view=AcquireCacheView(mask_image); + mask_view=AcquireAuthenticCacheView(mask_image,_exception); for (y=0; y < (ssize_t) mask_image->rows; y++) { q=GetCacheViewAuthenticPixels(mask_view,0,y,mask_image->columns,1, diff --git a/MagickWand/pixel-iterator.c b/MagickWand/pixel-iterator.c index 2c64d815d..d276961de 100644 --- a/MagickWand/pixel-iterator.c +++ b/MagickWand/pixel-iterator.c @@ -296,6 +296,9 @@ WandExport PixelIterator *NewPixelIterator(MagickWand *wand) const char *quantum; + ExceptionInfo + *exception; + Image *image; @@ -316,7 +319,8 @@ WandExport PixelIterator *NewPixelIterator(MagickWand *wand) image=GetImageFromMagickWand(wand); if (image == (Image *) NULL) return((PixelIterator *) NULL); - view=AcquireCacheView(image); + exception=AcquireExceptionInfo(); + view=AcquireVirtualCacheView(image,exception); if (view == (CacheView *) NULL) return((PixelIterator *) NULL); iterator=(PixelIterator *) AcquireMagickMemory(sizeof(*iterator)); @@ -327,7 +331,7 @@ WandExport PixelIterator *NewPixelIterator(MagickWand *wand) iterator->id=AcquireWandId(); (void) FormatLocaleString(iterator->name,MaxTextExtent,"%s-%.20g", PixelIteratorId,(double) iterator->id); - iterator->exception=AcquireExceptionInfo(); + iterator->exception=exception; iterator->image=CloneImage(image,0,0,MagickTrue,iterator->exception); iterator->view=view; SetGeometry(image,&iterator->region); @@ -413,6 +417,9 @@ WandExport PixelIterator *NewPixelRegionIterator(MagickWand *wand, const char *quantum; + ExceptionInfo + *exception; + Image *image; @@ -432,7 +439,8 @@ WandExport PixelIterator *NewPixelRegionIterator(MagickWand *wand, image=GetImageFromMagickWand(wand); if (image == (Image *) NULL) return((PixelIterator *) NULL); - view=AcquireCacheView(image); + exception=AcquireExceptionInfo(); + view=AcquireVirtualCacheView(image,exception); if (view == (CacheView *) NULL) return((PixelIterator *) NULL); iterator=(PixelIterator *) AcquireMagickMemory(sizeof(*iterator)); @@ -443,7 +451,7 @@ WandExport PixelIterator *NewPixelRegionIterator(MagickWand *wand, iterator->id=AcquireWandId(); (void) FormatLocaleString(iterator->name,MaxTextExtent,"%s-%.20g", PixelIteratorId,(double) iterator->id); - iterator->exception=AcquireExceptionInfo(); + iterator->exception=exception; iterator->view=view; SetGeometry(image,&iterator->region); iterator->region.width=width; diff --git a/MagickWand/wand-view.c b/MagickWand/wand-view.c index e31719e17..43fbd5ea6 100644 --- a/MagickWand/wand-view.c +++ b/MagickWand/wand-view.c @@ -729,6 +729,9 @@ static PixelWand ***AcquirePixelsThreadSet(const size_t number_wands, WandExport WandView *NewWandView(MagickWand *wand) { + ExceptionInfo + *exception; + WandView *wand_view; @@ -744,13 +747,14 @@ WandExport WandView *NewWandView(MagickWand *wand) WandViewId,(double) wand_view->id); wand_view->description=ConstantString("WandView"); wand_view->wand=wand; - wand_view->view=AcquireCacheView(wand_view->wand->images); + exception=AcquireExceptionInfo(); + wand_view->view=AcquireVirtualCacheView(wand_view->wand->images,exception); wand_view->extent.width=wand->images->columns; wand_view->extent.height=wand->images->rows; wand_view->number_threads=GetOpenMPMaximumThreads(); wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->extent.width, wand_view->number_threads); - wand_view->exception=AcquireExceptionInfo(); + wand_view->exception=exception; if (wand_view->pixel_wands == (PixelWand ***) NULL) ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed", GetExceptionMessage(errno)); @@ -789,6 +793,9 @@ WandExport WandView *NewWandView(MagickWand *wand) WandExport WandView *NewWandViewExtent(MagickWand *wand,const ssize_t x, const ssize_t y,const size_t width,const size_t height) { + ExceptionInfo + *exception; + WandView *wand_view; @@ -803,14 +810,15 @@ WandExport WandView *NewWandViewExtent(MagickWand *wand,const ssize_t x, (void) FormatLocaleString(wand_view->name,MaxTextExtent,"%s-%.20g", WandViewId,(double) wand_view->id); wand_view->description=ConstantString("WandView"); - wand_view->view=AcquireCacheView(wand_view->wand->images); + exception=AcquireExceptionInfo(); + wand_view->view=AcquireVirtualCacheView(wand_view->wand->images,exception); wand_view->wand=wand; wand_view->extent.width=width; wand_view->extent.height=height; wand_view->extent.x=x; wand_view->extent.y=y; wand_view->number_threads=GetOpenMPMaximumThreads(); - wand_view->exception=AcquireExceptionInfo(); + wand_view->exception=exception; wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->extent.width, wand_view->number_threads); if (wand_view->pixel_wands == (PixelWand ***) NULL) diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index 68af30525..13faa628a 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -1583,7 +1583,7 @@ static void SetAttribute(pTHX_ struct PackageInfo *info,Image *image, y=0; items=sscanf(attribute,"%*[^[][%ld%*[,/]%ld",&x,&y); (void) items; - image_view=AcquireCacheView(image); + image_view=AcquireAuthenticCacheView(image,exception); q=GetCacheViewAuthenticPixels(image_view,x,y,1,1,exception); if (q != (Quantum *) NULL) { @@ -1807,7 +1807,7 @@ static void SetAttribute(pTHX_ struct PackageInfo *info,Image *image, y=0; items=sscanf(attribute,"%*[^[][%ld%*[,/]%ld",&x,&y); (void) items; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); q=GetCacheViewAuthenticPixels(image_view,x,y,1,1,exception); if (q != (Quantum *) NULL) { @@ -5008,7 +5008,7 @@ Get(ref,...) y=0; items=sscanf(attribute,"%*[^[][%ld%*[,/]%ld",&x,&y); (void) items; - image_view=AcquireCacheView(image); + image_view=AcquireVirtualCacheView(image,exception); p=GetCacheViewVirtualPixels(image_view,x,y,1,1,exception); if (p != (const Quantum *) NULL) { @@ -8429,7 +8429,8 @@ Mogrify(ref,...) 1.0); if (composite_image->matte != MagickTrue) (void) SetImageAlpha(composite_image,OpaqueAlpha,exception); - composite_view=AcquireCacheView(composite_image); + composite_view=AcquireAuthenticCacheView(composite_image, + exception); for (y=0; y < (ssize_t) composite_image->rows ; y++) { q=GetCacheViewAuthenticPixels(composite_view,0,y,(ssize_t) diff --git a/coders/msl.c b/coders/msl.c index 0ba831804..f0feae779 100644 --- a/coders/msl.c +++ b/coders/msl.c @@ -1954,7 +1954,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, if (composite_image->matte != MagickTrue) (void) SetImageAlpha(composite_image,OpaqueAlpha, &exception); - composite_view=AcquireCacheView(composite_image); + composite_view=AcquireAuthenticCacheView(composite_image, + &exception); for (y=0; y < (ssize_t) composite_image->rows ; y++) { q=GetCacheViewAuthenticPixels(composite_view,0,y, diff --git a/coders/xtrn.c b/coders/xtrn.c index 64c5ca086..4fbb2b24e 100644 --- a/coders/xtrn.c +++ b/coders/xtrn.c @@ -148,7 +148,7 @@ static Image *ReadXTRNImage(const ImageInfo *image_info, (void) sscanf(clone_info->filename,"%lx,%lx",¶m1,¶m2); image_ptr=(Image **) param2; if (*image_ptr != (Image *)NULL) - image=CloneImage(*image_ptr,0,0,MagickFalse,exception); + image=CloneImage(*image_ptr,0,0,MagickFalse,&(*image_ptr)->exception); #ifdef ALL_IMAGEINFO image_info_ptr=(ImageInfo **) param1; if (*image_info_ptr != (ImageInfo *)NULL) @@ -595,7 +595,7 @@ static MagickBooleanType WriteXTRNImage(const ImageInfo *image_info,Image *image SetImageInfo(clone_info,1,exception); (void) CopyMagickString(image->magick,clone_info->magick, MaxTextExtent); - status=WriteStream(clone_info,image,fifo,exception); + status=WriteStream(clone_info,image,fifo); if (status == MagickFalse) CatchImageException(image); } @@ -624,7 +624,7 @@ static MagickBooleanType WriteXTRNImage(const ImageInfo *image_info,Image *image SetImageInfo(clone_info,1,exception); (void) CopyMagickString(image->magick,clone_info->magick, MaxTextExtent); - status=WriteStream(clone_info,image,SafeArrayFifo,exception); + status=WriteStream(clone_info,image,SafeArrayFifo); if (status == MagickFalse) CatchImageException(image); } -- 2.50.1