diff --git a/Android.mk b/Android.mk index 865ae71bd..12d27b174 100644 --- a/Android.mk +++ b/Android.mk @@ -30,7 +30,7 @@ OPENCL_INCLUDE_PATH := $(OPENCL_PATH)/qualcomm/include LTDL_LIB_PATH := $(LOCAL_PATH)/libltdl-2.4.6 -IMAGE_MAGICK_BASEDIR := ImageMagick-7.1.1-43 +IMAGE_MAGICK_BASEDIR := ImageMagick-7.1.1-44 IMAGE_MAGICK := $(LOCAL_PATH)/$(IMAGE_MAGICK_BASEDIR) JPEG_LIB_PATH := $(LOCAL_PATH)/libjpeg-turbo-2.0.2 diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Blob.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Blob.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Blob.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Blob.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/BlobRef.cpp b/ImageMagick-7.1.1-44/Magick++/lib/BlobRef.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/BlobRef.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/BlobRef.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/CoderInfo.cpp b/ImageMagick-7.1.1-44/Magick++/lib/CoderInfo.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/CoderInfo.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/CoderInfo.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Color.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Color.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Color.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Color.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Drawable.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Drawable.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Drawable.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Drawable.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Exception.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Exception.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Exception.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Exception.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Functions.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Functions.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Functions.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Functions.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Geometry.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Geometry.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Geometry.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Geometry.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Image.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Image.cpp similarity index 99% rename from ImageMagick-7.1.1-43/Magick++/lib/Image.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Image.cpp index 59a57a931..c7fd09cc8 100644 --- a/ImageMagick-7.1.1-43/Magick++/lib/Image.cpp +++ b/ImageMagick-7.1.1-44/Magick++/lib/Image.cpp @@ -3568,10 +3568,15 @@ void Magick::Image::magnify(void) } void Magick::Image::map(const Image &mapImage_,const bool dither_) +{ + map(mapImage_, dither_ ? RiemersmaDitherMethod : NoDitherMethod); +} + +void Magick::Image::map(const Image &mapImage_,const DitherMethod ditherMethod_) { modifyImage(); GetPPException; - options()->quantizeDither(dither_); + options()->quantizeDither(ditherMethod_); RemapImage(options()->quantizeInfo(),image(),mapImage_.constImage(), exceptionInfo); ThrowImageException; diff --git a/ImageMagick-7.1.1-43/Magick++/lib/ImageRef.cpp b/ImageMagick-7.1.1-44/Magick++/lib/ImageRef.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/ImageRef.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/ImageRef.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Blob.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Blob.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Blob.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Blob.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/BlobRef.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/BlobRef.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/BlobRef.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/BlobRef.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/CoderInfo.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/CoderInfo.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/CoderInfo.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/CoderInfo.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Color.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Color.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Color.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Color.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Drawable.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Drawable.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Drawable.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Drawable.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Exception.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Exception.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Exception.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Exception.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Functions.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Functions.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Functions.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Functions.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Geometry.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Geometry.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Geometry.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Geometry.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Image.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Image.h similarity index 99% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Image.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Image.h index d76d642c4..3a604fc67 100644 --- a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Image.h +++ b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Image.h @@ -1083,6 +1083,7 @@ namespace Magick // Remap image colors with closest color from reference image void map(const Image &mapImage_,const bool dither_=false); + void map(const Image &mapImage_,const DitherMethod ditherMethod_); // Delineate arbitrarily shaped clusters in the image. void meanShift(const size_t width_,const size_t height_, diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/ImageRef.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/ImageRef.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/ImageRef.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/ImageRef.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Include.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Include.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Include.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Include.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Montage.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Montage.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Montage.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Montage.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Options.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Options.h similarity index 99% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Options.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Options.h index 826b897d3..286f89271 100644 --- a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Options.h +++ b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Options.h @@ -168,6 +168,7 @@ namespace Magick // Dither image during quantization. void quantizeDither(const bool ditherFlag_); bool quantizeDither(void) const; + void quantizeDither(const DitherMethod ditherMethod_); // Dither method void quantizeDitherMethod(const DitherMethod ditherMethod_); diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Pixels.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Pixels.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Pixels.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Pixels.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/ResourceLimits.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/ResourceLimits.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/ResourceLimits.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/ResourceLimits.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/STL.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/STL.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/STL.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/STL.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/SecurityPolicy.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/SecurityPolicy.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/SecurityPolicy.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/SecurityPolicy.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Statistic.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Statistic.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Statistic.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Statistic.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/Thread.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/Thread.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/Thread.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/Thread.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Magick++/TypeMetric.h b/ImageMagick-7.1.1-44/Magick++/lib/Magick++/TypeMetric.h similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Magick++/TypeMetric.h rename to ImageMagick-7.1.1-44/Magick++/lib/Magick++/TypeMetric.h diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Montage.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Montage.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Montage.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Montage.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Options.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Options.cpp similarity index 98% rename from ImageMagick-7.1.1-43/Magick++/lib/Options.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Options.cpp index 9a2c3fb5a..5d5724c96 100644 --- a/ImageMagick-7.1.1-43/Magick++/lib/Options.cpp +++ b/ImageMagick-7.1.1-44/Magick++/lib/Options.cpp @@ -472,9 +472,7 @@ Magick::ColorspaceType Magick::Options::quantizeColorSpace(void) const void Magick::Options::quantizeDither(const bool ditherFlag_) { - _imageInfo->dither=(MagickBooleanType) ditherFlag_; - _quantizeInfo->dither_method=ditherFlag_ ? RiemersmaDitherMethod : - NoDitherMethod; + quantizeDither(ditherFlag_ ? RiemersmaDitherMethod : NoDitherMethod); } bool Magick::Options::quantizeDither(void) const @@ -482,6 +480,12 @@ bool Magick::Options::quantizeDither(void) const return(static_cast(_imageInfo->dither)); } +void Magick::Options::quantizeDither(const DitherMethod ditherMethod_) +{ + _imageInfo->dither=(MagickBooleanType) (ditherMethod_ != NoDitherMethod); + _quantizeInfo->dither_method=ditherMethod_; +} + void Magick::Options::quantizeDitherMethod(const DitherMethod ditherMethod_) { _quantizeInfo->dither_method=ditherMethod_; diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Pixels.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Pixels.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Pixels.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Pixels.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/ResourceLimits.cpp b/ImageMagick-7.1.1-44/Magick++/lib/ResourceLimits.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/ResourceLimits.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/ResourceLimits.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/STL.cpp b/ImageMagick-7.1.1-44/Magick++/lib/STL.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/STL.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/STL.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/SecurityPolicy.cpp b/ImageMagick-7.1.1-44/Magick++/lib/SecurityPolicy.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/SecurityPolicy.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/SecurityPolicy.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Statistic.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Statistic.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Statistic.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Statistic.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/Thread.cpp b/ImageMagick-7.1.1-44/Magick++/lib/Thread.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/Thread.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/Thread.cpp diff --git a/ImageMagick-7.1.1-43/Magick++/lib/TypeMetric.cpp b/ImageMagick-7.1.1-44/Magick++/lib/TypeMetric.cpp similarity index 100% rename from ImageMagick-7.1.1-43/Magick++/lib/TypeMetric.cpp rename to ImageMagick-7.1.1-44/Magick++/lib/TypeMetric.cpp diff --git a/ImageMagick-7.1.1-43/MagickCore/MagickCore.h b/ImageMagick-7.1.1-44/MagickCore/MagickCore.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/MagickCore.h rename to ImageMagick-7.1.1-44/MagickCore/MagickCore.h diff --git a/ImageMagick-7.1.1-43/MagickCore/accelerate-kernels-private.h b/ImageMagick-7.1.1-44/MagickCore/accelerate-kernels-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/accelerate-kernels-private.h rename to ImageMagick-7.1.1-44/MagickCore/accelerate-kernels-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/accelerate-private.h b/ImageMagick-7.1.1-44/MagickCore/accelerate-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/accelerate-private.h rename to ImageMagick-7.1.1-44/MagickCore/accelerate-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/accelerate.c b/ImageMagick-7.1.1-44/MagickCore/accelerate.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/accelerate.c rename to ImageMagick-7.1.1-44/MagickCore/accelerate.c diff --git a/ImageMagick-7.1.1-43/MagickCore/animate-private.h b/ImageMagick-7.1.1-44/MagickCore/animate-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/animate-private.h rename to ImageMagick-7.1.1-44/MagickCore/animate-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/animate.c b/ImageMagick-7.1.1-44/MagickCore/animate.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/animate.c rename to ImageMagick-7.1.1-44/MagickCore/animate.c index d9c41a2f4..560d7d57d 100644 --- a/ImageMagick-7.1.1-43/MagickCore/animate.c +++ b/ImageMagick-7.1.1-44/MagickCore/animate.c @@ -1740,9 +1740,9 @@ MagickExport Image *XAnimateImages(Display *display, */ windows->image.flags|=USPosition; windows->image.x=(XDisplayWidth(display,visual_info->screen)/2)- - ((ssize_t) windows->image.width/2); + ((int) windows->image.width/2); windows->image.y=(XDisplayHeight(display,visual_info->screen)/2)- - ((ssize_t) windows->image.height/2); + ((int) windows->image.height/2); } manager_hints->flags=IconWindowHint | InputHint | StateHint; manager_hints->icon_window=windows->icon.id; @@ -2421,7 +2421,7 @@ MagickExport Image *XAnimateImages(Display *display, if (windows->command.mapped == MagickFalse) { windows->command.x=event.xconfigure.x- - (ssize_t) windows->command.width-25; + (int) windows->command.width-25; windows->command.y=event.xconfigure.y; XConstrainWindowPosition(display,&windows->command); window_changes.x=windows->command.x; diff --git a/ImageMagick-7.1.1-43/MagickCore/animate.h b/ImageMagick-7.1.1-44/MagickCore/animate.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/animate.h rename to ImageMagick-7.1.1-44/MagickCore/animate.h diff --git a/ImageMagick-7.1.1-43/MagickCore/annotate-private.h b/ImageMagick-7.1.1-44/MagickCore/annotate-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/annotate-private.h rename to ImageMagick-7.1.1-44/MagickCore/annotate-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/annotate.c b/ImageMagick-7.1.1-44/MagickCore/annotate.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/annotate.c rename to ImageMagick-7.1.1-44/MagickCore/annotate.c diff --git a/ImageMagick-7.1.1-43/MagickCore/annotate.h b/ImageMagick-7.1.1-44/MagickCore/annotate.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/annotate.h rename to ImageMagick-7.1.1-44/MagickCore/annotate.h diff --git a/ImageMagick-7.1.1-43/MagickCore/artifact.c b/ImageMagick-7.1.1-44/MagickCore/artifact.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/artifact.c rename to ImageMagick-7.1.1-44/MagickCore/artifact.c diff --git a/ImageMagick-7.1.1-43/MagickCore/artifact.h b/ImageMagick-7.1.1-44/MagickCore/artifact.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/artifact.h rename to ImageMagick-7.1.1-44/MagickCore/artifact.h diff --git a/ImageMagick-7.1.1-43/MagickCore/attribute.c b/ImageMagick-7.1.1-44/MagickCore/attribute.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/attribute.c rename to ImageMagick-7.1.1-44/MagickCore/attribute.c diff --git a/ImageMagick-7.1.1-43/MagickCore/attribute.h b/ImageMagick-7.1.1-44/MagickCore/attribute.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/attribute.h rename to ImageMagick-7.1.1-44/MagickCore/attribute.h diff --git a/ImageMagick-7.1.1-43/MagickCore/blob-private.h b/ImageMagick-7.1.1-44/MagickCore/blob-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/blob-private.h rename to ImageMagick-7.1.1-44/MagickCore/blob-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/blob.c b/ImageMagick-7.1.1-44/MagickCore/blob.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/blob.c rename to ImageMagick-7.1.1-44/MagickCore/blob.c diff --git a/ImageMagick-7.1.1-43/MagickCore/blob.h b/ImageMagick-7.1.1-44/MagickCore/blob.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/blob.h rename to ImageMagick-7.1.1-44/MagickCore/blob.h diff --git a/ImageMagick-7.1.1-43/MagickCore/cache-private.h b/ImageMagick-7.1.1-44/MagickCore/cache-private.h similarity index 98% rename from ImageMagick-7.1.1-43/MagickCore/cache-private.h rename to ImageMagick-7.1.1-44/MagickCore/cache-private.h index d4ec5e563..04bd42b1e 100644 --- a/ImageMagick-7.1.1-43/MagickCore/cache-private.h +++ b/ImageMagick-7.1.1-44/MagickCore/cache-private.h @@ -240,8 +240,8 @@ static inline MagickBooleanType IsValidPixelOffset(const ssize_t x, { if (extent == 0) return(MagickTrue); - if ((x >= (MAGICK_SSIZE_MAX/(ssize_t) extent)) || - (x <= (MAGICK_SSIZE_MIN/(ssize_t) extent))) + if ((x >= (ssize_t) (MAGICK_SSIZE_MAX/(ssize_t) extent)) || + (x <= (ssize_t) (MAGICK_SSIZE_MIN/(ssize_t) extent))) return(MagickFalse); return(MagickTrue); } diff --git a/ImageMagick-7.1.1-43/MagickCore/cache-view.c b/ImageMagick-7.1.1-44/MagickCore/cache-view.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/cache-view.c rename to ImageMagick-7.1.1-44/MagickCore/cache-view.c index a809a0bdc..8044e9ee1 100644 --- a/ImageMagick-7.1.1-43/MagickCore/cache-view.c +++ b/ImageMagick-7.1.1-44/MagickCore/cache-view.c @@ -176,8 +176,6 @@ MagickExport CacheView *AcquireVirtualCacheView(const Image *image, cache_view->debug=(GetLogEventMask() & CacheEvent) != 0 ? MagickTrue : MagickFalse; cache_view->signature=MagickCoreSignature; - if (cache_view->nexus_info == (NexusInfo **) NULL) - ThrowFatalException(CacheFatalError,"UnableToAcquireCacheView"); return(cache_view); } diff --git a/ImageMagick-7.1.1-43/MagickCore/cache-view.h b/ImageMagick-7.1.1-44/MagickCore/cache-view.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/cache-view.h rename to ImageMagick-7.1.1-44/MagickCore/cache-view.h diff --git a/ImageMagick-7.1.1-43/MagickCore/cache.c b/ImageMagick-7.1.1-44/MagickCore/cache.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/cache.c rename to ImageMagick-7.1.1-44/MagickCore/cache.c index 8df69456c..3e9e85b0d 100644 --- a/ImageMagick-7.1.1-43/MagickCore/cache.c +++ b/ImageMagick-7.1.1-44/MagickCore/cache.c @@ -203,13 +203,9 @@ MagickPrivate Cache AcquirePixelCache(const size_t number_threads) cache_info->number_threads=number_threads; if (GetOpenMPMaximumThreads() > cache_info->number_threads) cache_info->number_threads=GetOpenMPMaximumThreads(); - if (GetMagickResourceLimit(ThreadResource) > cache_info->number_threads) - cache_info->number_threads=(size_t) GetMagickResourceLimit(ThreadResource); if (cache_info->number_threads == 0) cache_info->number_threads=1; cache_info->nexus_info=AcquirePixelCacheNexus(cache_info->number_threads); - if (cache_info->nexus_info == (NexusInfo **) NULL) - ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed"); value=GetEnvironmentValue("MAGICK_SYNCHRONIZE"); if (value != (const char *) NULL) { @@ -2682,11 +2678,11 @@ static inline ssize_t EdgeY(const ssize_t y,const size_t rows) return(y); } -static inline MagickBooleanType IsOffsetOverflow(const ssize_t x, - const ssize_t y) +static inline MagickBooleanType IsOffsetOverflow(const MagickOffsetType x, + const MagickOffsetType y) { - if (((y > 0) && (x > (MAGICK_SSIZE_MAX-y))) || - ((y < 0) && (x < (MAGICK_SSIZE_MIN-y)))) + if (((y > 0) && (x > ((MagickOffsetType) MAGICK_SSIZE_MAX-y))) || + ((y < 0) && (x < ((MagickOffsetType) MAGICK_SSIZE_MIN-y)))) return(MagickFalse); return(MagickTrue); } @@ -2784,7 +2780,7 @@ MagickPrivate const Quantum *GetVirtualPixelCacheNexus(const Image *image, if (IsValidPixelOffset(nexus_info->region.y,cache_info->columns) == MagickFalse) return((const Quantum *) NULL); offset=nexus_info->region.y*(MagickOffsetType) cache_info->columns; - if (IsOffsetOverflow(offset,nexus_info->region.x) == MagickFalse) + if (IsOffsetOverflow(offset,(MagickOffsetType) nexus_info->region.x) == MagickFalse) return((const Quantum *) NULL); offset+=nexus_info->region.x; length=(MagickSizeType) (nexus_info->region.height-1L)*cache_info->columns+ @@ -3681,7 +3677,7 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode, #else (void) ThrowMagickException(exception,GetMagickModule(), MissingDelegateError,"DelegateLibrarySupportNotBuiltIn", - "'%s' (policy requires anonymous memory mapping)",image->filename); + "`%s' (policy requires anonymous memory mapping)",image->filename); #endif } value=DestroyString(value); @@ -3692,8 +3688,12 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode, assert(cache_info->signature == MagickCoreSignature); if (((MagickSizeType) image->columns > cache_info->width_limit) || ((MagickSizeType) image->rows > cache_info->height_limit)) - ThrowBinaryException(ImageError,"WidthOrHeightExceedsLimit", - image->filename); + { + (void) ThrowMagickException(exception,GetMagickModule(),ImageError, + "WidthOrHeightExceedsLimit","`%s' (%.20gx%.20g)",image->filename, + (double) cache_info->width_limit,(double) cache_info->height_limit); + return(MagickFalse); + } if (GetMagickResourceLimit(ListLengthResource) != MagickResourceInfinity) { length=GetImageListLength(image); @@ -4632,7 +4632,7 @@ static MagickBooleanType ReadPixelCachePixels( if (IsValidPixelOffset(nexus_info->region.y,cache_info->columns) == MagickFalse) return(MagickFalse); offset=nexus_info->region.y*(MagickOffsetType) cache_info->columns; - if ((offset/(MagickOffsetType) cache_info->columns) != nexus_info->region.y) + if ((ssize_t) (offset/cache_info->columns) != nexus_info->region.y) return(MagickFalse); offset+=nexus_info->region.x; number_channels=cache_info->number_channels; diff --git a/ImageMagick-7.1.1-43/MagickCore/cache.h b/ImageMagick-7.1.1-44/MagickCore/cache.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/cache.h rename to ImageMagick-7.1.1-44/MagickCore/cache.h diff --git a/ImageMagick-7.1.1-43/MagickCore/channel.c b/ImageMagick-7.1.1-44/MagickCore/channel.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/channel.c rename to ImageMagick-7.1.1-44/MagickCore/channel.c diff --git a/ImageMagick-7.1.1-43/MagickCore/channel.h b/ImageMagick-7.1.1-44/MagickCore/channel.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/channel.h rename to ImageMagick-7.1.1-44/MagickCore/channel.h diff --git a/ImageMagick-7.1.1-43/MagickCore/cipher.c b/ImageMagick-7.1.1-44/MagickCore/cipher.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/cipher.c rename to ImageMagick-7.1.1-44/MagickCore/cipher.c diff --git a/ImageMagick-7.1.1-43/MagickCore/cipher.h b/ImageMagick-7.1.1-44/MagickCore/cipher.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/cipher.h rename to ImageMagick-7.1.1-44/MagickCore/cipher.h diff --git a/ImageMagick-7.1.1-43/MagickCore/client.c b/ImageMagick-7.1.1-44/MagickCore/client.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/client.c rename to ImageMagick-7.1.1-44/MagickCore/client.c diff --git a/ImageMagick-7.1.1-43/MagickCore/client.h b/ImageMagick-7.1.1-44/MagickCore/client.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/client.h rename to ImageMagick-7.1.1-44/MagickCore/client.h diff --git a/ImageMagick-7.1.1-43/MagickCore/coder-private.h b/ImageMagick-7.1.1-44/MagickCore/coder-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/coder-private.h rename to ImageMagick-7.1.1-44/MagickCore/coder-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/coder.c b/ImageMagick-7.1.1-44/MagickCore/coder.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/coder.c rename to ImageMagick-7.1.1-44/MagickCore/coder.c diff --git a/ImageMagick-7.1.1-43/MagickCore/coder.h b/ImageMagick-7.1.1-44/MagickCore/coder.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/coder.h rename to ImageMagick-7.1.1-44/MagickCore/coder.h diff --git a/ImageMagick-7.1.1-43/MagickCore/color-private.h b/ImageMagick-7.1.1-44/MagickCore/color-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/color-private.h rename to ImageMagick-7.1.1-44/MagickCore/color-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/color.c b/ImageMagick-7.1.1-44/MagickCore/color.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/color.c rename to ImageMagick-7.1.1-44/MagickCore/color.c diff --git a/ImageMagick-7.1.1-43/MagickCore/color.h b/ImageMagick-7.1.1-44/MagickCore/color.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/color.h rename to ImageMagick-7.1.1-44/MagickCore/color.h diff --git a/ImageMagick-7.1.1-43/MagickCore/colormap-private.h b/ImageMagick-7.1.1-44/MagickCore/colormap-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/colormap-private.h rename to ImageMagick-7.1.1-44/MagickCore/colormap-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/colormap.c b/ImageMagick-7.1.1-44/MagickCore/colormap.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/colormap.c rename to ImageMagick-7.1.1-44/MagickCore/colormap.c index d1637baa5..0b4447875 100644 --- a/ImageMagick-7.1.1-43/MagickCore/colormap.c +++ b/ImageMagick-7.1.1-44/MagickCore/colormap.c @@ -373,7 +373,7 @@ MagickExport MagickBooleanType SortColormapByIntensity(Image *image, ssize_t i; - i=ConstrainColormapIndex(image,GetPixelIndex(image,q),exception); + i=ConstrainColormapIndex(image,(ssize_t) GetPixelIndex(image,q),exception); index=(Quantum) pixels[i]; SetPixelIndex(image,index,q); SetPixelViaPixelInfo(image,image->colormap+(ssize_t) index,q); diff --git a/ImageMagick-7.1.1-43/MagickCore/colormap.h b/ImageMagick-7.1.1-44/MagickCore/colormap.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/colormap.h rename to ImageMagick-7.1.1-44/MagickCore/colormap.h diff --git a/ImageMagick-7.1.1-43/MagickCore/colorspace-private.h b/ImageMagick-7.1.1-44/MagickCore/colorspace-private.h similarity index 95% rename from ImageMagick-7.1.1-43/MagickCore/colorspace-private.h rename to ImageMagick-7.1.1-44/MagickCore/colorspace-private.h index 66aeade42..024a551d8 100644 --- a/ImageMagick-7.1.1-43/MagickCore/colorspace-private.h +++ b/ImageMagick-7.1.1-44/MagickCore/colorspace-private.h @@ -1,12 +1,12 @@ /* Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available. - + You may not use this file except in compliance with the License. You may obtain a copy of the License at - + https://imagemagick.org/script/license.php - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -52,14 +52,14 @@ extern "C" { static inline void ConvertAdobe98ToXYZ(const double red,const double green, const double blue,double *X,double *Y,double *Z) -{ +{ double b, g, r; /* - Convert Adobe '98 to XYZ colorspace. + Convert Adobe '98 to XYZ colorspace. */ r=QuantumScale*DecodePixelGamma((double) QuantumRange*red); g=QuantumScale*DecodePixelGamma((double) QuantumRange*green); @@ -67,7 +67,7 @@ static inline void ConvertAdobe98ToXYZ(const double red,const double green, *X=0.57666904291013050*r+0.18555823790654630*g+0.18822864623499470*b; *Y=0.29734497525053605*r+0.62736356625546610*g+0.07529145849399788*b; *Z=0.02703136138641234*r+0.07068885253582723*g+0.99133753683763880*b; -} +} static inline void ConvertXYZToRGB(const double X,const double Y,const double Z, double *red,double *green,double *blue) @@ -75,11 +75,19 @@ static inline void ConvertXYZToRGB(const double X,const double Y,const double Z, double b, g, + min, r; - r=3.2404542*X-1.5371385*Y-0.4985314*Z; - g=(-0.9692660)*X+1.8760108*Y+0.0415560*Z; - b=0.0556434*X-0.2040259*Y+1.0572252*Z; + r=(3.240969941904521*X)+(-1.537383177570093*Y)+(-0.498610760293*Z); + g=(-0.96924363628087*X)+(1.87596750150772*Y)+(0.041555057407175*Z); + b=(0.055630079696993*X)+(-0.20397695888897*Y)+(1.056971514242878*Z); + min=MagickMin(r,MagickMin(g,b)); + if (min < 0.0) + { + r-=min; + g-=min; + b-=min; + } *red=EncodePixelGamma((double) QuantumRange*r); *green=EncodePixelGamma((double) QuantumRange*g); *blue=EncodePixelGamma((double) QuantumRange*b); @@ -97,6 +105,29 @@ static inline void ConvertAdobe98ToRGB(const double r,const double g, ConvertXYZToRGB(X,Y,Z,red,green,blue); } +static inline void ConvertCAT02LMSToXYZ(const double L,const double M, + const double S,double *X,double *Y,double *Z) +{ + /* + Convert CAT02LMS to XYZ colorspace. + */ + *X=1.096123820835514*L-0.278869000218287*M+0.182745179382773*S; + *Y=0.454369041975359*L+0.473533154307412*M+0.072097803717229*S; + *Z=(-0.009627608738429)*L-0.005698031216113*M+1.015325639954543*S; +} + +static inline void ConvertCAT02LMSToRGB(const double L,const double M, + const double S,double *R,double *G,double *B) +{ + double + X, + Y, + Z; + + ConvertCAT02LMSToXYZ(L,M,S,&X,&Y,&Z); + ConvertXYZToRGB(X,Y,Z,R,G,B); +} + static inline void ConvertCMYKToRGB(PixelInfo *pixel) { pixel->red=(((double) QuantumRange-(QuantumScale*pixel->red* @@ -499,12 +530,12 @@ static inline void ConvertHWBToRGB(const double hue,const double whiteness, static inline void ConvertLabToXYZ(const double L,const double a,const double b, const IlluminantType illuminant,double *X,double *Y,double *Z) -{ +{ double x, y, z; - + y=(L+16.0)/116.0; x=y+a/500.0; z=y-b/200.0; @@ -643,7 +674,7 @@ static inline void ConvertLMSToRGB(const double L,const double M, static inline void ConvertDisplayP3ToXYZ(const double red,const double green, const double blue,double *X,double *Y,double *Z) -{ +{ double b, g, @@ -687,12 +718,12 @@ static inline void ConvertLuvToRGB(const double L,const double u, static inline void ConvertProPhotoToXYZ(const double red,const double green, const double blue,double *X,double *Y,double *Z) -{ +{ double b, g, r; - + /* Convert ProPhoto to XYZ colorspace. */ @@ -717,6 +748,48 @@ static inline void ConvertProPhotoToRGB(const double r,const double g, ConvertXYZToRGB(X,Y,Z,red,green,blue); } +static inline void ConvertXYZToCAT02LMS(const double X,const double Y, + const double Z,double *L,double *M,double *S) +{ + *L=0.7328*X+0.4296*Y-0.1624*Z; + *M=(-0.7036)*X+1.6975*Y+0.0061*Z; + *S=0.0030*X+0.0136*Y+0.9834*Z; +} + +static inline void ConvertRGBToXYZ(const double red,const double green, + const double blue,double *X,double *Y,double *Z) +{ + double + b, + g, + r; + + /* + Convert RGB to XYZ colorspace. + */ + r=QuantumScale*DecodePixelGamma(red); + g=QuantumScale*DecodePixelGamma(green); + b=QuantumScale*DecodePixelGamma(blue); + *X=(0.4123955889674142161*r)+(0.3575834307637148171*g)+ + (0.1804926473817015735*b); + *Y=(0.2125862307855955516*r)+(0.7151703037034108499*g)+ + (0.07220049864333622685*b); + *Z=(0.01929721549174694484*r)+(0.1191838645808485318*g)+ + (0.9504971251315797660*b); +} + +static inline void ConvertRGBToCAT02LMS(const double R,const double G, + const double B,double *L,double *M,double *S) +{ + double + X, + Y, + Z; + + ConvertRGBToXYZ(R,G,B,&X,&Y,&Z); + ConvertXYZToCAT02LMS(X,Y,Z,L,M,S); +} + static inline void ConvertRGBToCMY(const double red,const double green, const double blue,double *cyan,double *magenta,double *yellow) { @@ -862,25 +935,6 @@ static inline void ConvertRGBToHSI(const double red,const double green, *hue+=1.0; } -static inline void ConvertRGBToXYZ(const double red,const double green, - const double blue,double *X,double *Y,double *Z) -{ - double - b, - g, - r; - - /* - Convert RGB to XYZ colorspace. - */ - r=QuantumScale*DecodePixelGamma(red); - g=QuantumScale*DecodePixelGamma(green); - b=QuantumScale*DecodePixelGamma(blue); - *X=0.4124564*r+0.3575761*g+0.1804375*b; - *Y=0.2126729*r+0.7151522*g+0.0721750*b; - *Z=0.0193339*r+0.1191920*g+0.9503041*b; -} - static inline void ConvertXYZToAdobe98(const double X,const double Y, const double Z,double *red,double *green,double *blue) { @@ -1241,7 +1295,10 @@ static inline void ConvertXYZToJzazbz(const double X,const double Y, Sp, Xp, Yp, - Zp; + Zp, + J, + a, + b; Xp=(Jzazbz_b*X-(Jzazbz_b-1)*Z); Yp=(Jzazbz_g*Y-(Jzazbz_g-1)*X); @@ -1256,9 +1313,18 @@ static inline void ConvertXYZToJzazbz(const double X,const double Y, gamma=pow(S*PerceptibleReciprocal(white_luminance),Jzazbz_n); Sp=pow((Jzazbz_c1+Jzazbz_c2*gamma)/(1.0+Jzazbz_c3*gamma),Jzazbz_p); Iz=0.5*Lp+0.5*Mp; - *az=3.52400*Lp-4.066708*Mp+0.542708*Sp+0.5; - *bz=0.199076*Lp+1.096799*Mp-1.295875*Sp+0.5; - *Jz=((Jzazbz_d+1.0)*Iz)/(Jzazbz_d*Iz+1.0)-Jzazbz_d0; + J=((Jzazbz_d+1.0)*Iz)/(Jzazbz_d*Iz+1.0)-Jzazbz_d0; + if (IsNaN(J) != 0) + J=0.0; + a=3.52400*Lp-4.066708*Mp+0.542708*Sp+0.5; + if (IsNaN(a) != 0) + a=0.5; + b=0.199076*Lp+1.096799*Mp-1.295875*Sp+0.5; + if (IsNaN(b) != 0) + b=0.5; + *Jz=J; + *az=a; + *bz=b; } static inline void ConvertJzazbzToXYZ(const double Jz,const double az, @@ -1298,8 +1364,16 @@ static inline void ConvertJzazbzToXYZ(const double Jz,const double az, Xp=1.92422643578761*L-1.00479231259537*M+0.037651404030618*S; Yp=0.350316762094999*L+0.726481193931655*M-0.065384422948085*S; Zp=(-0.0909828109828476)*L-0.312728290523074*M+1.52276656130526*S; - *X=(Xp+(Jzazbz_b-1.0)*Zp)/Jzazbz_b; - *Y=(Yp+(Jzazbz_g-1.0)**X)/Jzazbz_g; + if (IsNaN(Zp) != 0) + Zp=0.0; + Xp=(Xp+(Jzazbz_b-1.0)*Zp)/Jzazbz_b; + if (IsNaN(Xp) != 0) + Xp=0.0; + Yp=(Yp+(Jzazbz_g-1.0)*Xp)/Jzazbz_g; + if (IsNaN(Yp) != 0) + Yp=0.0; + *X=Xp; + *Y=Yp; *Z=Zp; } @@ -1512,7 +1586,7 @@ static inline void ConvertYDbDrToRGB(const double Y,const double Db, 0.26789932820759876*(Dr-0.5)); *blue=(double) QuantumRange*(Y+0.66467905997895482*(Db-0.5)- 7.9202543533108e-05*(Dr-0.5)); -} +} static inline void ConvertYIQToRGB(const double Y,const double I,const double Q, double *red,double *green,double *blue) diff --git a/ImageMagick-7.1.1-43/MagickCore/colorspace.c b/ImageMagick-7.1.1-44/MagickCore/colorspace.c similarity index 97% rename from ImageMagick-7.1.1-43/MagickCore/colorspace.c rename to ImageMagick-7.1.1-44/MagickCore/colorspace.c index baeeb43dd..a87defad8 100644 --- a/ImageMagick-7.1.1-43/MagickCore/colorspace.c +++ b/ImageMagick-7.1.1-44/MagickCore/colorspace.c @@ -121,146 +121,157 @@ static MagickBooleanType */ MagickPrivate void ConvertGenericToRGB(const ColorspaceType colorspace, const double X,const double Y,const double Z,const double white_luminance, - const IlluminantType illuminant,double *red,double *green,double *blue) + const IlluminantType illuminant,double *R,double *G,double *B) { switch (colorspace) { case Adobe98Colorspace: { - ConvertAdobe98ToRGB(X,Y,Z,red,green,blue); + ConvertAdobe98ToRGB(X,Y,Z,R,G,B); + break; + } + case CAT02LMSColorspace: + { + double + L, + M, + S; + + ConvertXYZToCAT02LMS(X,Y,Z,&L,&M,&S); + ConvertCAT02LMSToRGB(L,M,S,R,G,B); break; } case CMYColorspace: { - ConvertCMYToRGB(X,Y,Z,red,green,blue); + ConvertCMYToRGB(X,Y,Z,R,G,B); break; } case DisplayP3Colorspace: { - ConvertDisplayP3ToRGB(X,Y,Z,red,green,blue); + ConvertDisplayP3ToRGB(X,Y,Z,R,G,B); break; } case HCLColorspace: { - ConvertHCLToRGB(X,Y,Z,red,green,blue); + ConvertHCLToRGB(X,Y,Z,R,G,B); break; } case HCLpColorspace: { - ConvertHCLpToRGB(X,Y,Z,red,green,blue); + ConvertHCLpToRGB(X,Y,Z,R,G,B); break; } case HSBColorspace: { - ConvertHSBToRGB(X,Y,Z,red,green,blue); + ConvertHSBToRGB(X,Y,Z,R,G,B); break; } case HSIColorspace: { - ConvertHSIToRGB(X,Y,Z,red,green,blue); + ConvertHSIToRGB(X,Y,Z,R,G,B); break; } case HSLColorspace: { - ConvertHSLToRGB(X,Y,Z,red,green,blue); + ConvertHSLToRGB(X,Y,Z,R,G,B); break; } case HSVColorspace: { - ConvertHSVToRGB(X,Y,Z,red,green,blue); + ConvertHSVToRGB(X,Y,Z,R,G,B); break; } case HWBColorspace: { - ConvertHWBToRGB(X,Y,Z,red,green,blue); + ConvertHWBToRGB(X,Y,Z,R,G,B); break; } case JzazbzColorspace: { - ConvertJzazbzToRGB(X,Y,Z,white_luminance,red,green,blue); + ConvertJzazbzToRGB(X,Y,Z,white_luminance,R,G,B); break; } case LabColorspace: { - ConvertLabToRGB(X,Y,Z,illuminant,red,green,blue); + ConvertLabToRGB(X,Y,Z,illuminant,R,G,B); break; } case LCHColorspace: case LCHabColorspace: { - ConvertLCHabToRGB(X,Y,Z,illuminant,red,green,blue); + ConvertLCHabToRGB(X,Y,Z,illuminant,R,G,B); break; } case LCHuvColorspace: { - ConvertLCHuvToRGB(X,Y,Z,illuminant,red,green,blue); + ConvertLCHuvToRGB(X,Y,Z,illuminant,R,G,B); break; } case LMSColorspace: { - ConvertLMSToRGB(X,Y,Z,red,green,blue); + ConvertLMSToRGB(X,Y,Z,R,G,B); break; } case LuvColorspace: { - ConvertLuvToRGB(X,Y,Z,illuminant,red,green,blue); + ConvertLuvToRGB(X,Y,Z,illuminant,R,G,B); break; } case OklabColorspace: { - ConvertOklabToRGB(X,Y,Z,red,green,blue); + ConvertOklabToRGB(X,Y,Z,R,G,B); break; } case OklchColorspace: { - ConvertOklchToRGB(X,Y,Z,red,green,blue); + ConvertOklchToRGB(X,Y,Z,R,G,B); break; } case ProPhotoColorspace: { - ConvertProPhotoToRGB(X,Y,Z,red,green,blue); + ConvertProPhotoToRGB(X,Y,Z,R,G,B); break; } case xyYColorspace: { - ConvertxyYToRGB(X,Y,Z,red,green,blue); + ConvertxyYToRGB(X,Y,Z,R,G,B); break; } case XYZColorspace: { - ConvertXYZToRGB(X,Y,Z,red,green,blue); + ConvertXYZToRGB(X,Y,Z,R,G,B); break; } case YCbCrColorspace: { - ConvertYCbCrToRGB(X,Y,Z,red,green,blue); + ConvertYCbCrToRGB(X,Y,Z,R,G,B); break; } case YDbDrColorspace: { - ConvertYDbDrToRGB(X,Y,Z,red,green,blue); + ConvertYDbDrToRGB(X,Y,Z,R,G,B); break; } case YIQColorspace: { - ConvertYIQToRGB(X,Y,Z,red,green,blue); + ConvertYIQToRGB(X,Y,Z,R,G,B); break; } case YPbPrColorspace: { - ConvertYPbPrToRGB(X,Y,Z,red,green,blue); + ConvertYPbPrToRGB(X,Y,Z,R,G,B); break; } case YUVColorspace: { - ConvertYUVToRGB(X,Y,Z,red,green,blue); + ConvertYUVToRGB(X,Y,Z,R,G,B); break; } default: { - *red=(double) QuantumRange*X; - *green=(double) QuantumRange*Y; - *blue=(double) QuantumRange*Z; + *R=(double) QuantumRange*X; + *G=(double) QuantumRange*Y; + *B=(double) QuantumRange*Z; break; } } @@ -398,148 +409,158 @@ MagickExport void ConvertHSLToRGB(const double hue,const double saturation, % */ MagickPrivate void ConvertRGBToGeneric(const ColorspaceType colorspace, - const double red,const double green,const double blue, - const double white_luminance,const IlluminantType illuminant,double *X, - double *Y,double *Z) + const double R,const double G,const double B,const double white_luminance, + const IlluminantType illuminant,double *X,double *Y,double *Z) { switch (colorspace) { case Adobe98Colorspace: { - ConvertRGBToAdobe98(red,green,blue,X,Y,Z); + ConvertRGBToAdobe98(R,G,B,X,Y,Z); + break; + } + case CAT02LMSColorspace: + { + double + L, + M, + S; + + ConvertRGBToCAT02LMS(R,G,B,&L,&M,&S); + ConvertCAT02LMSToXYZ(L,M,S,X,Y,Z); break; } case CMYColorspace: { - ConvertRGBToCMY(red,green,blue,X,Y,Z); + ConvertRGBToCMY(R,G,B,X,Y,Z); break; } case DisplayP3Colorspace: { - ConvertRGBToDisplayP3(red,green,blue,X,Y,Z); + ConvertRGBToDisplayP3(R,G,B,X,Y,Z); break; } case HCLColorspace: { - ConvertRGBToHCL(red,green,blue,X,Y,Z); + ConvertRGBToHCL(R,G,B,X,Y,Z); break; } case HCLpColorspace: { - ConvertRGBToHCLp(red,green,blue,X,Y,Z); + ConvertRGBToHCLp(R,G,B,X,Y,Z); break; } case HSBColorspace: { - ConvertRGBToHSB(red,green,blue,X,Y,Z); + ConvertRGBToHSB(R,G,B,X,Y,Z); break; } case HSIColorspace: { - ConvertRGBToHSI(red,green,blue,X,Y,Z); + ConvertRGBToHSI(R,G,B,X,Y,Z); break; } case HSLColorspace: { - ConvertRGBToHSL(red,green,blue,X,Y,Z); + ConvertRGBToHSL(R,G,B,X,Y,Z); break; } case HSVColorspace: { - ConvertRGBToHSV(red,green,blue,X,Y,Z); + ConvertRGBToHSV(R,G,B,X,Y,Z); break; } case HWBColorspace: { - ConvertRGBToHWB(red,green,blue,X,Y,Z); + ConvertRGBToHWB(R,G,B,X,Y,Z); break; } case JzazbzColorspace: { - ConvertRGBToJzazbz(red,green,blue,white_luminance,X,Y,Z); + ConvertRGBToJzazbz(R,G,B,white_luminance,X,Y,Z); break; } case LabColorspace: { - ConvertRGBToLab(red,green,blue,illuminant,X,Y,Z); + ConvertRGBToLab(R,G,B,illuminant,X,Y,Z); break; } case LCHColorspace: case LCHabColorspace: { - ConvertRGBToLCHab(red,green,blue,illuminant,X,Y,Z); + ConvertRGBToLCHab(R,G,B,illuminant,X,Y,Z); break; } case LCHuvColorspace: { - ConvertRGBToLCHuv(red,green,blue,illuminant,X,Y,Z); + ConvertRGBToLCHuv(R,G,B,illuminant,X,Y,Z); break; } case LMSColorspace: { - ConvertRGBToLMS(red,green,blue,X,Y,Z); + ConvertRGBToLMS(R,G,B,X,Y,Z); break; } case LuvColorspace: { - ConvertRGBToLuv(red,green,blue,illuminant,X,Y,Z); + ConvertRGBToLuv(R,G,B,illuminant,X,Y,Z); break; } case OklabColorspace: { - ConvertRGBToOklab(red,green,blue,X,Y,Z); + ConvertRGBToOklab(R,G,B,X,Y,Z); break; } case OklchColorspace: { - ConvertRGBToOklch(red,green,blue,X,Y,Z); + ConvertRGBToOklch(R,G,B,X,Y,Z); break; } case ProPhotoColorspace: { - ConvertRGBToProPhoto(red,green,blue,X,Y,Z); + ConvertRGBToProPhoto(R,G,B,X,Y,Z); break; } case xyYColorspace: { - ConvertRGBToxyY(red,green,blue,X,Y,Z); + ConvertRGBToxyY(R,G,B,X,Y,Z); break; } case XYZColorspace: { - ConvertRGBToXYZ(red,green,blue,X,Y,Z); + ConvertRGBToXYZ(R,G,B,X,Y,Z); break; } case YCbCrColorspace: { - ConvertRGBToYCbCr(red,green,blue,X,Y,Z); + ConvertRGBToYCbCr(R,G,B,X,Y,Z); break; } case YDbDrColorspace: { - ConvertRGBToYDbDr(red,green,blue,X,Y,Z); + ConvertRGBToYDbDr(R,G,B,X,Y,Z); break; } case YIQColorspace: { - ConvertRGBToYIQ(red,green,blue,X,Y,Z); + ConvertRGBToYIQ(R,G,B,X,Y,Z); break; } case YPbPrColorspace: { - ConvertRGBToYPbPr(red,green,blue,X,Y,Z); + ConvertRGBToYPbPr(R,G,B,X,Y,Z); break; } case YUVColorspace: { - ConvertRGBToYUV(red,green,blue,X,Y,Z); + ConvertRGBToYUV(R,G,B,X,Y,Z); break; } default: { - *X=QuantumScale*red; - *Y=QuantumScale*green; - *Z=QuantumScale*blue; + *X=QuantumScale*R; + *Y=QuantumScale*G; + *Z=QuantumScale*B; break; } } @@ -936,6 +957,7 @@ static MagickBooleanType sRGBTransformImage(Image *image, } case CMYColorspace: case Adobe98Colorspace: + case CAT02LMSColorspace: case DisplayP3Colorspace: case HCLColorspace: case HCLpColorspace: @@ -2269,6 +2291,7 @@ static MagickBooleanType TransformsRGBImage(Image *image, } case Adobe98Colorspace: case CMYColorspace: + case CAT02LMSColorspace: case DisplayP3Colorspace: case HCLColorspace: case HCLpColorspace: diff --git a/ImageMagick-7.1.1-43/MagickCore/colorspace.h b/ImageMagick-7.1.1-44/MagickCore/colorspace.h similarity index 98% rename from ImageMagick-7.1.1-43/MagickCore/colorspace.h rename to ImageMagick-7.1.1-44/MagickCore/colorspace.h index 538b37ebf..3863732f6 100644 --- a/ImageMagick-7.1.1-43/MagickCore/colorspace.h +++ b/ImageMagick-7.1.1-44/MagickCore/colorspace.h @@ -1,12 +1,12 @@ /* Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available. - + You may not use this file except in compliance with the License. You may obtain a copy of the License at - + https://imagemagick.org/script/license.php - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -63,7 +63,8 @@ typedef enum Adobe98Colorspace, ProPhotoColorspace, OklabColorspace, - OklchColorspace + OklchColorspace, + CAT02LMSColorspace } ColorspaceType; extern MagickExport ColorspaceType diff --git a/ImageMagick-7.1.1-43/MagickCore/compare.c b/ImageMagick-7.1.1-44/MagickCore/compare.c similarity index 62% rename from ImageMagick-7.1.1-43/MagickCore/compare.c rename to ImageMagick-7.1.1-44/MagickCore/compare.c index 2a253144d..a44df4741 100644 --- a/ImageMagick-7.1.1-43/MagickCore/compare.c +++ b/ImageMagick-7.1.1-44/MagickCore/compare.c @@ -53,6 +53,7 @@ #include "MagickCore/compare.h" #include "MagickCore/composite-private.h" #include "MagickCore/constitute.h" +#include "MagickCore/distort.h" #include "MagickCore/exception-private.h" #include "MagickCore/enhance.h" #include "MagickCore/fourier.h" @@ -73,6 +74,7 @@ #include "MagickCore/statistic-private.h" #include "MagickCore/string-private.h" #include "MagickCore/thread-private.h" +#include "MagickCore/threshold.h" #include "MagickCore/transform.h" #include "MagickCore/utility.h" #include "MagickCore/version.h" @@ -100,7 +102,7 @@ % % o image: the image. % -% o reconstruct_image: the reconstruct image. +% o reconstruct_image: the reconstruction image. % % o metric: the metric. % @@ -109,7 +111,6 @@ % o exception: return any errors or warnings in this structure. % */ - MagickExport Image *CompareImages(Image *image,const Image *reconstruct_image, const MetricType metric,double *distortion,ExceptionInfo *exception) { @@ -336,7 +337,7 @@ MagickExport Image *CompareImages(Image *image,const Image *reconstruct_image, % % o image: the image. % -% o reconstruct_image: the reconstruct image. +% o reconstruct_image: the reconstruction image. % % o metric: the metric. % @@ -1207,9 +1208,14 @@ static MagickBooleanType GetPeakSignalToNoiseRatio(const Image *image, i; status=GetMeanSquaredDistortion(image,reconstruct_image,distortion,exception); - for (i=0; i <= MaxPixelChannels; i++) + for (i=0; i < MaxPixelChannels; i++) if (fabs(distortion[i]) >= MagickEpsilon) - distortion[i]=(-10.0*MagickLog10(distortion[i])); + distortion[i]=(-10.0*MagickLog10(distortion[i]))/48.1647; + distortion[CompositePixelChannel]=0.0; + for (i=0; i < MaxPixelChannels; i++) + if (fabs(distortion[i]) >= MagickEpsilon) + distortion[CompositePixelChannel]+=distortion[i]; + distortion[CompositePixelChannel]/=GetImageChannels(image); return(status); } @@ -1340,14 +1346,12 @@ static MagickBooleanType GetStructuralSimilarityDistortion(const Image *image, MagickBooleanType status; - ssize_t - j; - size_t columns, rows; ssize_t + j, y; /* @@ -1426,8 +1430,8 @@ static MagickBooleanType GetStructuralSimilarityDistortion(const Image *image, y_pixel_sigma_squared[MaxPixelChannels+1]; const Quantum - *magick_restrict reference, - *magick_restrict target; + *magick_restrict reconstruct, + *magick_restrict test; MagickRealType *k; @@ -1449,8 +1453,8 @@ static MagickBooleanType GetStructuralSimilarityDistortion(const Image *image, (void) memset(y_pixel_mu,0,sizeof(y_pixel_mu)); (void) memset(y_pixel_sigma_squared,0,sizeof(y_pixel_sigma_squared)); k=kernel_info->values; - reference=p; - target=q; + reconstruct=p; + test=q; for (v=0; v < (ssize_t) kernel_info->height; v++) { ssize_t @@ -1472,21 +1476,21 @@ static MagickBooleanType GetStructuralSimilarityDistortion(const Image *image, (reconstruct_traits == UndefinedPixelTrait) || ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; - x_pixel=QuantumScale*(double) reference[i]; + x_pixel=QuantumScale*(double) reconstruct[i]; x_pixel_mu[i]+=(*k)*x_pixel; x_pixel_sigma_squared[i]+=(*k)*x_pixel*x_pixel; y_pixel=QuantumScale*(double) - GetPixelChannel(reconstruct_image,channel,target); + GetPixelChannel(reconstruct_image,channel,test); y_pixel_mu[i]+=(*k)*y_pixel; y_pixel_sigma_squared[i]+=(*k)*y_pixel*y_pixel; xy_sigma[i]+=(*k)*x_pixel*y_pixel; } k++; - reference+=(ptrdiff_t) GetPixelChannels(image); - target+=(ptrdiff_t) GetPixelChannels(reconstruct_image); + reconstruct+=(ptrdiff_t) GetPixelChannels(image); + test+=(ptrdiff_t) GetPixelChannels(reconstruct_image); } - reference+=(ptrdiff_t) GetPixelChannels(image)*columns; - target+=(ptrdiff_t) GetPixelChannels(reconstruct_image)*columns; + reconstruct+=(ptrdiff_t) GetPixelChannels(image)*columns; + test+=(ptrdiff_t) GetPixelChannels(reconstruct_image)*columns; } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { @@ -1703,7 +1707,7 @@ MagickExport MagickBooleanType GetImageDistortion(Image *image, % % o image: the image. % -% o reconstruct_image: the reconstruct image. +% o reconstruct_image: the reconstruction image. % % o metric: the metric. % @@ -1847,7 +1851,7 @@ MagickExport double *GetImageDistortions(Image *image, % % o image: the image. % -% o reconstruct_image: the reconstruct image. +% o reconstruct_image: the reconstruction image. % % o exception: return any errors or warnings in this structure. % @@ -1938,7 +1942,7 @@ MagickExport MagickBooleanType IsImagesEqual(const Image *image, % location of two images. A value other than 0 means the colors match % exactly. Otherwise an error measure is computed by summing over all % pixels in an image the distance squared in RGB space between each image -% pixel and its corresponding pixel in the reconstruct image. The error +% pixel and its corresponding pixel in the reconstruction image. The error % measure is assigned to these image members: % % o mean_error_per_pixel: The mean error for any single pixel in @@ -1967,7 +1971,7 @@ MagickExport MagickBooleanType IsImagesEqual(const Image *image, % % o image: the image. % -% o reconstruct_image: the reconstruct image. +% o reconstruct_image: the reconstruction image. % % o exception: return any errors or warnings in this structure. % @@ -2074,14 +2078,16 @@ MagickExport MagickBooleanType SetImageColorMetric(Image *image, % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% SimilarityImage() compares the reference image of the image and returns the +% SimilarityImage() compares the reconstruction of the image and returns the % best match offset. In addition, it returns a similarity image such that an % exact match location is completely white and if none of the pixels match, % black, otherwise some gray level in-between. % +% Contributed by Fred Weinhaus. +% % The format of the SimilarityImageImage method is: % -% Image *SimilarityImage(const Image *image,const Image *reference, +% Image *SimilarityImage(const Image *image,const Image *reconstruct, % const MetricType metric,const double similarity_threshold, % RectangleInfo *offset,double *similarity,ExceptionInfo *exception) % @@ -2089,13 +2095,14 @@ MagickExport MagickBooleanType SetImageColorMetric(Image *image, % % o image: the image. % -% o reference: find an area of the image that closely resembles this image. +% o reconstruct: find an area of the image that closely resembles this image. % % o metric: the metric. % % o similarity_threshold: minimum distortion for (sub)image match. % -% o offset: the best match offset of the reference image within the image. +% o offset: the best match offset of the reconstruction image within the +% image. % % o similarity: the computed similarity between the images. % @@ -2104,63 +2111,63 @@ MagickExport MagickBooleanType SetImageColorMetric(Image *image, */ #if defined(MAGICKCORE_HDRI_SUPPORT) && defined(MAGICKCORE_FFTW_DELEGATE) -static Image *CrossCorrelationImage(const Image *alpha_image, +static Image *SIMCrossCorrelationImage(const Image *alpha_image, const Image *beta_image,ExceptionInfo *exception) { Image - *clone_image, - *complex_conjugate, - *complex_multiplication, - *cross_correlation, - *fft_images; + *alpha_fft = (Image *) NULL, + *beta_fft = (Image *) NULL, + *complex_conjugate = (Image *) NULL, + *complex_multiplication = (Image *) NULL, + *cross_correlation = (Image *) NULL, + *temp_image = (Image *) NULL; /* - Take the FFT of beta image. + Take the FFT of beta (reconstruction) image. */ - clone_image=CloneImage(beta_image,0,0,MagickTrue,exception); - if (clone_image == (Image *) NULL) - return(clone_image); - (void) SetImageArtifact(clone_image,"fourier:normalize","inverse"); - fft_images=ForwardFourierTransformImage(clone_image,MagickFalse, - exception); - clone_image=DestroyImageList(clone_image); - if (fft_images == (Image *) NULL) - return(fft_images); + temp_image=CloneImage(beta_image,0,0,MagickTrue,exception); + if (temp_image == (Image *) NULL) + return((Image *) NULL); + (void) SetImageArtifact(temp_image,"fourier:normalize","inverse"); + beta_fft=ForwardFourierTransformImage(temp_image,MagickFalse,exception); + temp_image=DestroyImageList(temp_image); + if (beta_fft == (Image *) NULL) + return((Image *) NULL); /* - Take the complex conjugate of beta image. + Take the complex conjugate of beta_fft. */ - complex_conjugate=ComplexImages(fft_images,ConjugateComplexOperator, - exception); - fft_images=DestroyImageList(fft_images); + complex_conjugate=ComplexImages(beta_fft,ConjugateComplexOperator,exception); + beta_fft=DestroyImageList(beta_fft); if (complex_conjugate == (Image *) NULL) - return(complex_conjugate); + return((Image *) NULL); /* - Take the FFT of the alpha image. + Take the FFT of the alpha (test) image. */ - clone_image=CloneImage(alpha_image,0,0,MagickTrue,exception); - if (clone_image == (Image *) NULL) + temp_image=CloneImage(alpha_image,0,0,MagickTrue,exception); + if (temp_image == (Image *) NULL) { complex_conjugate=DestroyImageList(complex_conjugate); - return(clone_image); + return((Image *) NULL); } - (void) SetImageArtifact(clone_image,"fourier:normalize","inverse"); - fft_images=ForwardFourierTransformImage(clone_image,MagickFalse,exception); - clone_image=DestroyImageList(clone_image); - if (fft_images == (Image *) NULL) + (void) SetImageArtifact(temp_image,"fourier:normalize","inverse"); + alpha_fft=ForwardFourierTransformImage(temp_image,MagickFalse,exception); + temp_image=DestroyImageList(temp_image); + if (alpha_fft == (Image *) NULL) { complex_conjugate=DestroyImageList(complex_conjugate); - return(fft_images); + return((Image *) NULL); } - complex_conjugate->next->next=fft_images; /* Do complex multiplication. */ DisableCompositeClampUnlessSpecified(complex_conjugate); + DisableCompositeClampUnlessSpecified(complex_conjugate->next); + complex_conjugate->next->next=alpha_fft; complex_multiplication=ComplexImages(complex_conjugate, MultiplyComplexOperator,exception); complex_conjugate=DestroyImageList(complex_conjugate); - if (fft_images == (Image *) NULL) - return(fft_images); + if (complex_multiplication == (Image *) NULL) + return((Image *) NULL); /* Do the IFT and return the cross-correlation result. */ @@ -2170,12 +2177,30 @@ static Image *CrossCorrelationImage(const Image *alpha_image, return(cross_correlation); } -static Image *NCCDivideImage(const Image *alpha_image,const Image *beta_image, +static Image *SIMDerivativeImage(const Image *image,const char *kernel, ExceptionInfo *exception) +{ + Image + *derivative_image; + + KernelInfo + *kernel_info; + + kernel_info=AcquireKernelInfo(kernel,exception); + if (kernel_info == (KernelInfo *) NULL) + return((Image *) NULL); + derivative_image=MorphologyImage(image,ConvolveMorphology,1,kernel_info, + exception); + kernel_info=DestroyKernelInfo(kernel_info); + return(derivative_image); +} + +static Image *SIMDivideImage(const Image *numerator_image, + const Image *denominator_image,ExceptionInfo *exception) { CacheView - *alpha_view, - *beta_view; + *denominator_view, + *numerator_view; Image *divide_image; @@ -2189,15 +2214,15 @@ static Image *NCCDivideImage(const Image *alpha_image,const Image *beta_image, /* Divide one image into another. */ - divide_image=CloneImage(alpha_image,0,0,MagickTrue,exception); + divide_image=CloneImage(numerator_image,0,0,MagickTrue,exception); if (divide_image == (Image *) NULL) return(divide_image); status=MagickTrue; - alpha_view=AcquireAuthenticCacheView(divide_image,exception); - beta_view=AcquireVirtualCacheView(beta_image,exception); + numerator_view=AcquireAuthenticCacheView(divide_image,exception); + denominator_view=AcquireVirtualCacheView(denominator_image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) \ - magick_number_threads(beta_image,divide_image,divide_image->rows,1) + magick_number_threads(denominator_image,divide_image,divide_image->rows,1) #endif for (y=0; y < (ssize_t) divide_image->rows; y++) { @@ -2212,9 +2237,9 @@ static Image *NCCDivideImage(const Image *alpha_image,const Image *beta_image, if (status == MagickFalse) continue; - p=GetCacheViewVirtualPixels(beta_view,0,y,beta_image->columns,1, - exception); - q=GetCacheViewAuthenticPixels(alpha_view,0,y,divide_image->columns,1, + p=GetCacheViewVirtualPixels(denominator_view,0,y, + denominator_image->columns,1,exception); + q=GetCacheViewAuthenticPixels(numerator_view,0,y,divide_image->columns,1, exception); if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL)) { @@ -2236,90 +2261,42 @@ static Image *NCCDivideImage(const Image *alpha_image,const Image *beta_image, q[i]=(Quantum) ((double) q[i]*PerceptibleReciprocal(QuantumScale* (double) p[i])); } - p+=(ptrdiff_t) GetPixelChannels(beta_image); + p+=(ptrdiff_t) GetPixelChannels(denominator_image); q+=(ptrdiff_t) GetPixelChannels(divide_image); } - if (SyncCacheViewAuthenticPixels(alpha_view,exception) == MagickFalse) + if (SyncCacheViewAuthenticPixels(numerator_view,exception) == MagickFalse) status=MagickFalse; } - beta_view=DestroyCacheView(beta_view); - alpha_view=DestroyCacheView(alpha_view); + denominator_view=DestroyCacheView(denominator_view); + numerator_view=DestroyCacheView(numerator_view); if (status == MagickFalse) divide_image=DestroyImage(divide_image); return(divide_image); } -static MagickBooleanType NCCMaximaImage(const Image *image,double *maxima, - RectangleInfo *offset,ExceptionInfo *exception) +static Image *SIMDivideByMagnitude(Image *image,Image *magnitude_image, + const Image *source_image,ExceptionInfo *exception) { - CacheView - *image_view; - - MagickBooleanType - status; - - ssize_t - y; - - /* - Identify the maxima value in the image and its location. - */ - status=MagickTrue; - *maxima=0.0; - offset->x=0; - offset->y=0; - image_view=AcquireVirtualCacheView(image,exception); - for (y=0; y < (ssize_t) image->rows; y++) - { - const Quantum - *magick_restrict p; - - ssize_t - x; - - if (status == MagickFalse) - continue; - p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); - if (p == (const Quantum *) NULL) - { - status=MagickFalse; - continue; - } - for (x=0; x < (ssize_t) image->columns; x++) - { - double - sum = 0.0; + Image + *divide_image, + *result_image; - ssize_t - channels = 0, - i; + RectangleInfo + geometry; - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - { - PixelChannel channel = GetPixelChannelChannel(image,i); - PixelTrait traits = GetPixelChannelTraits(image,channel); - if ((traits & UpdatePixelTrait) == 0) - continue; - sum+=(double) p[i]; - channels++; - } - if ((channels != 0) && ((sum/channels) > *maxima)) - { - *maxima=sum/channels; - offset->x=x; - offset->y=y; - } - p+=(ptrdiff_t) GetPixelChannels(image); - } - if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) - status=MagickFalse; - } - image_view=DestroyCacheView(image_view); - return(status); + divide_image=SIMDivideImage(image,magnitude_image,exception); + if (divide_image == (Image *) NULL) + return((Image *) NULL); + GetPixelInfoRGBA(0,0,0,0,÷_image->background_color); + SetGeometry(source_image,&geometry); + geometry.width=MagickMax(source_image->columns,divide_image->columns); + geometry.height=MagickMax(source_image->rows,divide_image->rows); + result_image=ExtentImage(divide_image,&geometry,exception); + divide_image=DestroyImage(divide_image); + return(result_image); } -static MagickBooleanType NCCMultiplyImage(Image *image,const double factor, - const ChannelStatistics *channel_statistics,ExceptionInfo *exception) +static MagickBooleanType SIMLogImage(Image *image,ExceptionInfo *exception) { CacheView *image_view; @@ -2331,7 +2308,7 @@ static MagickBooleanType NCCMultiplyImage(Image *image,const double factor, y; /* - Multiply each pixel by a factor. + Take the log of each pixel. */ status=MagickTrue; image_view=AcquireAuthenticCacheView(image,exception); @@ -2366,10 +2343,7 @@ static MagickBooleanType NCCMultiplyImage(Image *image,const double factor, PixelTrait traits = GetPixelChannelTraits(image,channel); if ((traits & UpdatePixelTrait) == 0) continue; - if (channel_statistics != (const ChannelStatistics *) NULL) - q[i]=(Quantum) ((double) q[i]*QuantumScale* - channel_statistics[channel].standard_deviation); - q[i]=(Quantum) ((double) q[i]*factor); + q[i]=(Quantum) (QuantumRange*10.0*MagickLog10((double) q[i])); } q+=(ptrdiff_t) GetPixelChannels(image); } @@ -2380,7 +2354,7 @@ static MagickBooleanType NCCMultiplyImage(Image *image,const double factor, return(status); } -static Image *NCCSquareImage(const Image *image,ExceptionInfo *exception) +static Image *SIMSquareImage(const Image *image,ExceptionInfo *exception) { CacheView *image_view; @@ -2447,17 +2421,52 @@ static Image *NCCSquareImage(const Image *image,ExceptionInfo *exception) return(square_image); } -static Image *NCCSubtractImageMean(const Image *alpha_image, - const Image *beta_image,const ChannelStatistics *channel_statistics, +static Image *SIMMagnitudeImage(Image *alpha_image,Image *beta_image, ExceptionInfo *exception) +{ + Image + *magnitude_image, + *xsq_image, + *ysq_image; + + MagickBooleanType + status; + + (void) SetImageArtifact(alpha_image,"compose:clamp","False"); + xsq_image=SIMSquareImage(alpha_image,exception); + if (xsq_image == (Image *) NULL) + return((Image *) NULL); + (void) SetImageArtifact(beta_image,"compose:clamp","False"); + ysq_image=SIMSquareImage(beta_image,exception); + if (ysq_image == (Image *) NULL) + { + xsq_image=DestroyImage(xsq_image); + return((Image *) NULL); + } + status=CompositeImage(xsq_image,ysq_image,PlusCompositeOp,MagickTrue,0,0, + exception); + magnitude_image=xsq_image; + ysq_image=DestroyImage(ysq_image); + if (status == MagickFalse) + { + magnitude_image=DestroyImage(magnitude_image); + return((Image *) NULL); + } + status=EvaluateImage(magnitude_image,PowEvaluateOperator,0.5,exception); + if (status == MagickFalse) + { + magnitude_image=DestroyImage(magnitude_image); + return (Image *) NULL; + } + return(magnitude_image); +} + +static MagickBooleanType SIMMaximaImage(const Image *image,double *maxima, + RectangleInfo *offset,ExceptionInfo *exception) { CacheView - *beta_view, *image_view; - Image - *gamma_image; - MagickBooleanType status; @@ -2465,80 +2474,80 @@ static Image *NCCSubtractImageMean(const Image *alpha_image, y; /* - Subtract the image mean and pad. + Identify the maxima value in the image and its location. */ - gamma_image=CloneImage(beta_image,alpha_image->columns,alpha_image->rows, - MagickTrue,exception); - if (gamma_image == (Image *) NULL) - return(gamma_image); status=MagickTrue; - image_view=AcquireAuthenticCacheView(gamma_image,exception); - beta_view=AcquireVirtualCacheView(beta_image,exception); + *maxima=MagickMinimumValue; + offset->x=0; + offset->y=0; + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) \ - magick_number_threads(beta_image,gamma_image,gamma_image->rows,1) + magick_number_threads(image,image,image->rows,1) #endif - for (y=0; y < (ssize_t) gamma_image->rows; y++) + for (y=0; y < (ssize_t) image->rows; y++) { const Quantum *magick_restrict p; - Quantum - *magick_restrict q; + double + row_maxima; ssize_t + row_x, x; if (status == MagickFalse) continue; - p=GetCacheViewVirtualPixels(beta_view,0,y,beta_image->columns,1, - exception); - q=GetCacheViewAuthenticPixels(image_view,0,y,gamma_image->columns,1, - exception); - if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL)) + p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); + if (p == (const Quantum *) NULL) { status=MagickFalse; continue; } - for (x=0; x < (ssize_t) gamma_image->columns; x++) + row_maxima=(double) p[0]; + row_x=0; + for (x=0; x < (ssize_t) image->columns; x++) { ssize_t i; - for (i=0; i < (ssize_t) GetPixelChannels(gamma_image); i++) + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { - PixelChannel channel = GetPixelChannelChannel(gamma_image,i); - PixelTrait traits = GetPixelChannelTraits(gamma_image,channel); + PixelChannel channel = GetPixelChannelChannel(image,i); + PixelTrait traits = GetPixelChannelTraits(image,channel); if ((traits & UpdatePixelTrait) == 0) continue; - if ((x >= (ssize_t) beta_image->columns) || - (y >= (ssize_t) beta_image->rows)) - q[i]=(Quantum) 0; - else - q[i]=(Quantum) ((double) p[i]-channel_statistics[channel].mean); + if ((double) p[i] > row_maxima) + { + row_maxima=(double) p[i]; + row_x=x; + } } - p+=(ptrdiff_t) GetPixelChannels(beta_image); - q+=(ptrdiff_t) GetPixelChannels(gamma_image); + p+=(ptrdiff_t) GetPixelChannels(image); } +#if defined(MAGICKCORE_OPENMP_SUPPORT) + #pragma omp critical (MagickCore_SIMMaximaImage) +#endif + if (row_maxima > *maxima) + { + *maxima=row_maxima; + offset->x=row_x; + offset->y=y; + } if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) status=MagickFalse; } - beta_view=DestroyCacheView(beta_view); image_view=DestroyCacheView(image_view); - if (status == MagickFalse) - gamma_image=DestroyImage(gamma_image); - return(gamma_image); + return(status); } -static Image *NCCUnityImage(const Image *alpha_image,const Image *beta_image, - ExceptionInfo *exception) +static MagickBooleanType SIMMinimaImage(const Image *image,double *minima, + RectangleInfo *offset,ExceptionInfo *exception) { CacheView *image_view; - Image - *unity_image; - MagickBooleanType status; @@ -2546,74 +2555,80 @@ static Image *NCCUnityImage(const Image *alpha_image,const Image *beta_image, y; /* - Create a padded unity image. + Identify the minima value in the image and its location. */ - unity_image=CloneImage(alpha_image,alpha_image->columns,alpha_image->rows, - MagickTrue,exception); - if (unity_image == (Image *) NULL) - return(unity_image); - if (SetImageStorageClass(unity_image,DirectClass,exception) == MagickFalse) - return(DestroyImage(unity_image)); status=MagickTrue; - image_view=AcquireAuthenticCacheView(unity_image,exception); + *minima=MagickMaximumValue; + offset->x=0; + offset->y=0; + image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) \ - magick_number_threads(unity_image,unity_image,unity_image->rows,1) + magick_number_threads(image,image,image->rows,1) #endif - for (y=0; y < (ssize_t) unity_image->rows; y++) + for (y=0; y < (ssize_t) image->rows; y++) { - Quantum - *magick_restrict q; + const Quantum + *magick_restrict p; + + double + row_minima; ssize_t + row_x, x; if (status == MagickFalse) continue; - q=GetCacheViewAuthenticPixels(image_view,0,y,unity_image->columns,1, - exception); - if (q == (Quantum *) NULL) + p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); + if (p == (const Quantum *) NULL) { status=MagickFalse; continue; } - for (x=0; x < (ssize_t) unity_image->columns; x++) + row_minima=(double) p[0]; + row_x=0; + for (x=0; x < (ssize_t) image->columns; x++) { ssize_t i; - for (i=0; i < (ssize_t) GetPixelChannels(unity_image); i++) + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { - PixelChannel channel = GetPixelChannelChannel(unity_image,i); - PixelTrait traits = GetPixelChannelTraits(unity_image,channel); + PixelChannel channel = GetPixelChannelChannel(image,i); + PixelTrait traits = GetPixelChannelTraits(image,channel); if ((traits & UpdatePixelTrait) == 0) continue; - q[i]=QuantumRange; - if ((x >= (ssize_t) beta_image->columns) || - (y >= (ssize_t) beta_image->rows)) - q[i]=(Quantum) 0; + if ((double) p[i] < row_minima) + { + row_minima=(double) p[i]; + row_x=x; + } } - q+=(ptrdiff_t) GetPixelChannels(unity_image); + p+=(ptrdiff_t) GetPixelChannels(image); } +#if defined(MAGICKCORE_OPENMP_SUPPORT) + #pragma omp critical (MagickCore_SIMMinimaImage) +#endif + if (row_minima < *minima) + { + *minima=row_minima; + offset->x=row_x; + offset->y=y; + } if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) status=MagickFalse; } image_view=DestroyCacheView(image_view); - if (status == MagickFalse) - unity_image=DestroyImage(unity_image); - return(unity_image); + return(status); } -static Image *NCCVarianceImage(Image *alpha_image,const Image *beta_image, - ExceptionInfo *exception) +static MagickBooleanType SIMMultiplyImage(Image *image,const double factor, + const ChannelStatistics *channel_statistics,ExceptionInfo *exception) { CacheView - *beta_view, *image_view; - Image - *variance_image; - MagickBooleanType status; @@ -2621,23 +2636,16 @@ static Image *NCCVarianceImage(Image *alpha_image,const Image *beta_image, y; /* - Compute the variance of the two images. + Multiply each pixel by a factor. */ - variance_image=CloneImage(alpha_image,0,0,MagickTrue,exception); - if (variance_image == (Image *) NULL) - return(variance_image); status=MagickTrue; - image_view=AcquireAuthenticCacheView(variance_image,exception); - beta_view=AcquireVirtualCacheView(beta_image,exception); + image_view=AcquireAuthenticCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static) shared(status) \ - magick_number_threads(beta_image,variance_image,variance_image->rows,1) + magick_number_threads(image,image,image->rows,1) #endif - for (y=0; y < (ssize_t) variance_image->rows; y++) + for (y=0; y < (ssize_t) image->rows; y++) { - const Quantum - *magick_restrict p; - Quantum *magick_restrict q; @@ -2646,16 +2654,375 @@ static Image *NCCVarianceImage(Image *alpha_image,const Image *beta_image, if (status == MagickFalse) continue; - p=GetCacheViewVirtualPixels(beta_view,0,y,beta_image->columns,1, - exception); - q=GetCacheViewAuthenticPixels(image_view,0,y,variance_image->columns,1, - exception); - if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL)) + q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception); + if (q == (Quantum *) NULL) { status=MagickFalse; continue; } - for (x=0; x < (ssize_t) variance_image->columns; x++) + for (x=0; x < (ssize_t) image->columns; x++) + { + ssize_t + i; + + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + PixelChannel channel = GetPixelChannelChannel(image,i); + PixelTrait traits = GetPixelChannelTraits(image,channel); + if ((traits & UpdatePixelTrait) == 0) + continue; + if (channel_statistics != (const ChannelStatistics *) NULL) + q[i]=(Quantum) ((double) q[i]*QuantumScale* + channel_statistics[channel].standard_deviation); + q[i]=(Quantum) ((double) q[i]*factor); + } + q+=(ptrdiff_t) GetPixelChannels(image); + } + if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) + status=MagickFalse; + } + image_view=DestroyCacheView(image_view); + return(status); +} + +static Image *SIMPhaseCorrelationImage(const Image *alpha_image, + const Image *beta_image,const Image *magnitude_image,ExceptionInfo *exception) +{ + Image + *alpha_fft = (Image *) NULL, + *beta_fft = (Image *) NULL, + *complex_multiplication = (Image *) NULL, + *cross_correlation = (Image *) NULL; + + /* + Take the FFT of the beta (reconstruction) image. + */ + beta_fft=CloneImage(beta_image,0,0,MagickTrue,exception); + if (beta_fft == NULL) + return((Image *) NULL); + (void) SetImageArtifact(beta_fft,"fourier:normalize","inverse"); + beta_fft=ForwardFourierTransformImage(beta_fft,MagickFalse,exception); + if (beta_fft == NULL) + return((Image *) NULL); + /* + Take the FFT of the alpha (test) image. + */ + alpha_fft=CloneImage(alpha_image,0,0,MagickTrue,exception); + if (alpha_fft == (Image *) NULL) + { + beta_fft=DestroyImageList(beta_fft); + return((Image *) NULL); + } + (void) SetImageArtifact(alpha_fft,"fourier:normalize","inverse"); + alpha_fft=ForwardFourierTransformImage(alpha_fft,MagickFalse,exception); + if (alpha_fft == (Image *) NULL) + { + beta_fft=DestroyImageList(beta_fft); + return((Image *) NULL); + } + /* + Take the complex conjugate of the beta FFT. + */ + beta_fft=ComplexImages(beta_fft,ConjugateComplexOperator,exception); + if (beta_fft == (Image *) NULL) + { + alpha_fft=DestroyImageList(alpha_fft); + return((Image *) NULL); + } + /* + Do complex multiplication. + */ + beta_fft->next->next=alpha_fft; + DisableCompositeClampUnlessSpecified(beta_fft); + DisableCompositeClampUnlessSpecified(beta_fft->next); + complex_multiplication=ComplexImages(beta_fft,MultiplyComplexOperator, + exception); + beta_fft=DestroyImageList(beta_fft); + if (complex_multiplication == (Image *) NULL) + return((Image *) NULL); + /* + Divide the results. + */ + CompositeLayers(complex_multiplication,DivideSrcCompositeOp,(Image *) + magnitude_image,0,0,exception); + /* + Do the IFT and return the cross-correlation result. + */ + (void) SetImageArtifact(complex_multiplication,"fourier:normalize","inverse"); + cross_correlation=InverseFourierTransformImage(complex_multiplication, + complex_multiplication->next,MagickFalse,exception); + complex_multiplication=DestroyImageList(complex_multiplication); + return(cross_correlation); +} + +static MagickBooleanType SIMSetImageMean(const Image *image, + const ChannelStatistics *channel_statistics,ExceptionInfo *exception) +{ + CacheView + *image_view; + + MagickBooleanType + status; + + ssize_t + y; + + /* + Set image mean. + */ + status=MagickTrue; + image_view=AcquireAuthenticCacheView(image,exception); +#if defined(MAGICKCORE_OPENMP_SUPPORT) + #pragma omp parallel for schedule(static) shared(status) \ + magick_number_threads(image,image,image->rows,1) +#endif + for (y=0; y < (ssize_t) image->rows; y++) + { + Quantum + *magick_restrict q; + + ssize_t + x; + + if (status == MagickFalse) + continue; + q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception); + if (q == (Quantum *) NULL) + { + status=MagickFalse; + continue; + } + for (x=0; x < (ssize_t) image->columns; x++) + { + ssize_t + i; + + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + PixelChannel channel = GetPixelChannelChannel(image,i); + PixelTrait traits = GetPixelChannelTraits(image,channel); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=(Quantum) channel_statistics[channel].mean; + } + q+=(ptrdiff_t) GetPixelChannels(image); + } + if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) + status=MagickFalse; + } + image_view=DestroyCacheView(image_view); + return(status); +} + +static Image *SIMSubtractImageMean(const Image *alpha_image, + const Image *beta_image,const ChannelStatistics *channel_statistics, + ExceptionInfo *exception) +{ + CacheView + *beta_view, + *image_view; + + Image + *subtract_image; + + MagickBooleanType + status; + + ssize_t + y; + + /* + Subtract the image mean and pad. + */ + subtract_image=CloneImage(beta_image,alpha_image->columns,alpha_image->rows, + MagickTrue,exception); + if (subtract_image == (Image *) NULL) + return(subtract_image); + status=MagickTrue; + image_view=AcquireAuthenticCacheView(subtract_image,exception); + beta_view=AcquireVirtualCacheView(beta_image,exception); +#if defined(MAGICKCORE_OPENMP_SUPPORT) + #pragma omp parallel for schedule(static) shared(status) \ + magick_number_threads(beta_image,subtract_image,subtract_image->rows,1) +#endif + for (y=0; y < (ssize_t) subtract_image->rows; y++) + { + const Quantum + *magick_restrict p; + + Quantum + *magick_restrict q; + + ssize_t + x; + + if (status == MagickFalse) + continue; + p=GetCacheViewVirtualPixels(beta_view,0,y,beta_image->columns,1,exception); + q=GetCacheViewAuthenticPixels(image_view,0,y,subtract_image->columns,1, + exception); + if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL)) + { + status=MagickFalse; + continue; + } + for (x=0; x < (ssize_t) subtract_image->columns; x++) + { + ssize_t + i; + + for (i=0; i < (ssize_t) GetPixelChannels(subtract_image); i++) + { + PixelChannel channel = GetPixelChannelChannel(subtract_image,i); + PixelTrait traits = GetPixelChannelTraits(subtract_image,channel); + if ((traits & UpdatePixelTrait) == 0) + continue; + if ((x >= (ssize_t) beta_image->columns) || + (y >= (ssize_t) beta_image->rows)) + q[i]=(Quantum) 0; + else + q[i]=(Quantum) ((double) p[i]-channel_statistics[channel].mean); + } + p+=(ptrdiff_t) GetPixelChannels(beta_image); + q+=(ptrdiff_t) GetPixelChannels(subtract_image); + } + if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) + status=MagickFalse; + } + beta_view=DestroyCacheView(beta_view); + image_view=DestroyCacheView(image_view); + if (status == MagickFalse) + subtract_image=DestroyImage(subtract_image); + return(subtract_image); +} + +static Image *SIMUnityImage(const Image *alpha_image,const Image *beta_image, + ExceptionInfo *exception) +{ + CacheView + *image_view; + + Image + *unity_image; + + MagickBooleanType + status; + + ssize_t + y; + + /* + Create a padded unity image. + */ + unity_image=CloneImage(alpha_image,alpha_image->columns,alpha_image->rows, + MagickTrue,exception); + if (unity_image == (Image *) NULL) + return(unity_image); + if (SetImageStorageClass(unity_image,DirectClass,exception) == MagickFalse) + return(DestroyImage(unity_image)); + status=MagickTrue; + image_view=AcquireAuthenticCacheView(unity_image,exception); +#if defined(MAGICKCORE_OPENMP_SUPPORT) + #pragma omp parallel for schedule(static) shared(status) \ + magick_number_threads(unity_image,unity_image,unity_image->rows,1) +#endif + for (y=0; y < (ssize_t) unity_image->rows; y++) + { + Quantum + *magick_restrict q; + + ssize_t + x; + + if (status == MagickFalse) + continue; + q=GetCacheViewAuthenticPixels(image_view,0,y,unity_image->columns,1, + exception); + if (q == (Quantum *) NULL) + { + status=MagickFalse; + continue; + } + for (x=0; x < (ssize_t) unity_image->columns; x++) + { + ssize_t + i; + + for (i=0; i < (ssize_t) GetPixelChannels(unity_image); i++) + { + PixelChannel channel = GetPixelChannelChannel(unity_image,i); + PixelTrait traits = GetPixelChannelTraits(unity_image,channel); + if ((traits & UpdatePixelTrait) == 0) + continue; + if ((x >= (ssize_t) beta_image->columns) || + (y >= (ssize_t) beta_image->rows)) + q[i]=(Quantum) 0; + else + q[i]=QuantumRange; + } + q+=(ptrdiff_t) GetPixelChannels(unity_image); + } + if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) + status=MagickFalse; + } + image_view=DestroyCacheView(image_view); + if (status == MagickFalse) + unity_image=DestroyImage(unity_image); + return(unity_image); +} + +static Image *SIMVarianceImage(Image *alpha_image,const Image *beta_image, + ExceptionInfo *exception) +{ + CacheView + *beta_view, + *image_view; + + Image + *variance_image; + + MagickBooleanType + status; + + ssize_t + y; + + /* + Compute the variance of the two images. + */ + variance_image=CloneImage(alpha_image,0,0,MagickTrue,exception); + if (variance_image == (Image *) NULL) + return(variance_image); + status=MagickTrue; + image_view=AcquireAuthenticCacheView(variance_image,exception); + beta_view=AcquireVirtualCacheView(beta_image,exception); +#if defined(MAGICKCORE_OPENMP_SUPPORT) + #pragma omp parallel for schedule(static) shared(status) \ + magick_number_threads(beta_image,variance_image,variance_image->rows,1) +#endif + for (y=0; y < (ssize_t) variance_image->rows; y++) + { + const Quantum + *magick_restrict p; + + Quantum + *magick_restrict q; + + ssize_t + x; + + if (status == MagickFalse) + continue; + p=GetCacheViewVirtualPixels(beta_view,0,y,beta_image->columns,1, + exception); + q=GetCacheViewAuthenticPixels(image_view,0,y,variance_image->columns,1, + exception); + if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL)) + { + status=MagickFalse; + continue; + } + for (x=0; x < (ssize_t) variance_image->columns; x++) { ssize_t i; @@ -2666,8 +3033,8 @@ static Image *NCCVarianceImage(Image *alpha_image,const Image *beta_image, PixelTrait traits = GetPixelChannelTraits(variance_image,channel); if ((traits & UpdatePixelTrait) == 0) continue; - q[i]=(Quantum) ((double) ClampToQuantum((double) QuantumRange*sqrt(fabs( - QuantumScale*((double) q[i]-(double) p[i]))))/ + q[i]=(Quantum) ((double) ClampToQuantum((double) QuantumRange* + sqrt(fabs(QuantumScale*((double) q[i]-(double) p[i]))))/ sqrt((double) QuantumRange)); } p+=(ptrdiff_t) GetPixelChannels(beta_image); @@ -2679,34 +3046,385 @@ static Image *NCCVarianceImage(Image *alpha_image,const Image *beta_image, beta_view=DestroyCacheView(beta_view); image_view=DestroyCacheView(image_view); if (status == MagickFalse) - variance_image=DestroyImage(variance_image); - return(variance_image); + variance_image=DestroyImage(variance_image); + return(variance_image); +} + +static Image *DPCSimilarityImage(const Image *image,const Image *reconstruct, + RectangleInfo *offset,double *similarity_metric,ExceptionInfo *exception) +{ +#define ThrowDPCSimilarityException() \ +{ \ + if (dot_product_image != (Image *) NULL) \ + dot_product_image=DestroyImage(dot_product_image); \ + if (magnitude_image != (Image *) NULL) \ + magnitude_image=DestroyImage(magnitude_image); \ + if (reconstruct_image != (Image *) NULL) \ + reconstruct_image=DestroyImage(reconstruct_image); \ + if (rx_image != (Image *) NULL) \ + rx_image=DestroyImage(rx_image); \ + if (ry_image != (Image *) NULL) \ + ry_image=DestroyImage(ry_image); \ + if (test_image != (Image *) NULL) \ + test_image=DestroyImage(test_image); \ + if (threshold_image != (Image *) NULL) \ + threshold_image=DestroyImage(threshold_image); \ + if (trx_image != (Image *) NULL) \ + trx_image=DestroyImage(trx_image); \ + if (try_image != (Image *) NULL) \ + try_image=DestroyImage(try_image); \ + if (tx_image != (Image *) NULL) \ + tx_image=DestroyImage(tx_image); \ + if (ty_image != (Image *) NULL) \ + ty_image=DestroyImage(ty_image); \ + return((Image *) NULL); \ +} + + double + edge_factor = 0.0, + maxima = 0.0, + mean = 0.0, + standard_deviation = 0.0; + + Image + *dot_product_image = (Image *) NULL, + *magnitude_image = (Image *) NULL, + *reconstruct_image = (Image *) NULL, + *rx_image = (Image *) NULL, + *ry_image = (Image *) NULL, + *trx_image = (Image *) NULL, + *temp_image = (Image *) NULL, + *test_image = (Image *) NULL, + *threshold_image = (Image *) NULL, + *try_image = (Image *) NULL, + *tx_image = (Image *) NULL, + *ty_image = (Image *) NULL; + + MagickBooleanType + status; + + RectangleInfo + geometry; + + /* + Dot product correlation-based image similarity using FFT local statistics. + */ + test_image=CloneImage(image,0,0,MagickTrue,exception); + if (test_image == (Image *) NULL) + return((Image *) NULL); + GetPixelInfoRGBA(0,0,0,0,&test_image->background_color); + (void) ResetImagePage(test_image,"0x0+0+0"); + status=SetImageExtent(test_image,2*(size_t) ceil((double) image->columns/2.0), + 2*(size_t) ceil((double) image->rows/2.0),exception); + if (status == MagickFalse) + ThrowDPCSimilarityException(); + (void) SetImageAlphaChannel(test_image,OffAlphaChannel,exception); + /* + Compute the cross correlation of the test and reconstruct magnitudes. + */ + reconstruct_image=CloneImage(reconstruct,0,0,MagickTrue,exception); + if (reconstruct_image == (Image *) NULL) + ThrowDPCSimilarityException(); + GetPixelInfoRGBA(0,0,0,0,&reconstruct_image->background_color); + (void) ResetImagePage(reconstruct_image,"0x0+0+0"); + (void) SetImageAlphaChannel(reconstruct_image,OffAlphaChannel,exception); + /* + Compute X and Y derivatives of reference image. + */ + (void) SetImageVirtualPixelMethod(reconstruct_image,EdgeVirtualPixelMethod, + exception); + rx_image=SIMDerivativeImage(reconstruct_image,"Sobel",exception); + if (rx_image == (Image *) NULL) + ThrowDPCSimilarityException(); + ry_image=SIMDerivativeImage(reconstruct_image,"Sobel:90",exception); + reconstruct_image=DestroyImage(reconstruct_image); + if (ry_image == (Image *) NULL) + ThrowDPCSimilarityException(); + /* + Compute magnitude of derivatives. + */ + magnitude_image=SIMMagnitudeImage(rx_image,ry_image,exception); + if (magnitude_image == (Image *) NULL) + ThrowDPCSimilarityException(); + /* + Compute an edge normalization correction. + */ + threshold_image=CloneImage(magnitude_image,0,0,MagickTrue,exception); + if (threshold_image == (Image *) NULL) + ThrowDPCSimilarityException(); + status=BilevelImage(threshold_image,0.0,exception); + if (status == MagickFalse) + ThrowDPCSimilarityException(); + status=GetImageMean(threshold_image,&mean,&standard_deviation,exception); + threshold_image=DestroyImage(threshold_image); + if (status == MagickFalse) + ThrowDPCSimilarityException(); + edge_factor=1.0/(QuantumScale*mean)/reconstruct->columns/reconstruct->rows; + /* + Divide X and Y derivitives of reference image by magnitude. + */ + temp_image=SIMDivideByMagnitude(rx_image,magnitude_image,image,exception); + rx_image=DestroyImage(rx_image); + if (temp_image == (Image *) NULL) + ThrowDPCSimilarityException(); + rx_image=temp_image; + try_image=SIMDivideByMagnitude(ry_image,magnitude_image,image,exception); + magnitude_image=DestroyImage(magnitude_image); + ry_image=DestroyImage(ry_image); + if (try_image == (Image *) NULL) + ThrowDPCSimilarityException(); + ry_image=try_image; + /* + Compute X and Y derivatives of image. + */ + (void) SetImageVirtualPixelMethod(test_image,EdgeVirtualPixelMethod, + exception); + tx_image=SIMDerivativeImage(test_image,"Sobel",exception); + if (tx_image == (Image *) NULL) + ThrowDPCSimilarityException(); + ty_image=SIMDerivativeImage(test_image,"Sobel:90",exception); + test_image=DestroyImage(test_image); + if (ty_image == (Image *) NULL) + ThrowDPCSimilarityException(); + /* + Compute magnitude of derivatives. + */ + magnitude_image=SIMMagnitudeImage(tx_image,ty_image,exception); + if (magnitude_image == (Image *) NULL) + ThrowDPCSimilarityException(); + /* + Divide Lx and Ly by magnitude. + */ + temp_image=SIMDivideByMagnitude(tx_image,magnitude_image,image,exception); + tx_image=DestroyImage(tx_image); + if (temp_image == (Image *) NULL) + ThrowDPCSimilarityException(); + tx_image=temp_image; + try_image=SIMDivideByMagnitude(ty_image,magnitude_image,image,exception); + ty_image=DestroyImage(ty_image); + magnitude_image=DestroyImage(magnitude_image); + if (try_image == (Image *) NULL) + ThrowDPCSimilarityException(); + ty_image=try_image; + /* + Compute the cross correlation of the test and reference images. + */ + trx_image=SIMCrossCorrelationImage(tx_image,rx_image,exception); + rx_image=DestroyImage(rx_image); + tx_image=DestroyImage(tx_image); + if (trx_image == (Image *) NULL) + ThrowDPCSimilarityException(); + try_image=SIMCrossCorrelationImage(ty_image,ry_image,exception); + ry_image=DestroyImage(ry_image); + ty_image=DestroyImage(ty_image); + if (try_image == (Image *) NULL) + ThrowDPCSimilarityException(); + /* + Evaluate dot product correlation image. + */ + (void) SetImageArtifact(try_image,"compose:clamp","False"); + status=CompositeImage(trx_image,try_image,PlusCompositeOp,MagickTrue,0,0, + exception); + try_image=DestroyImage(try_image); + if (status == MagickFalse) + ThrowDPCSimilarityException(); + status=SIMMultiplyImage(trx_image,edge_factor, + (const ChannelStatistics *) NULL,exception); + if (status == MagickFalse) + ThrowDPCSimilarityException(); + /* + Crop results. + */ + SetGeometry(image,&geometry); + geometry.width=image->columns; + geometry.height=image->rows; + (void) ResetImagePage(trx_image,"0x0+0+0"); + dot_product_image=CropImage(trx_image,&geometry,exception); + trx_image=DestroyImage(trx_image); + if (dot_product_image == (Image *) NULL) + ThrowDPCSimilarityException(); + (void) ResetImagePage(dot_product_image,"0x0+0+0"); + /* + Identify the maxima value in the image and its location. + */ + status=GrayscaleImage(dot_product_image,AveragePixelIntensityMethod, + exception); + if (status == MagickFalse) + ThrowDPCSimilarityException(); + dot_product_image->depth=MAGICKCORE_QUANTUM_DEPTH; + status=SIMMaximaImage(dot_product_image,&maxima,offset,exception); + if (status == MagickFalse) + ThrowDPCSimilarityException(); + *similarity_metric=1.0-QuantumScale*maxima; + return(dot_product_image); +} + +static Image *MSESimilarityImage(const Image *image,const Image *reconstruct, + RectangleInfo *offset,double *similarity_metric,ExceptionInfo *exception) +{ +#define ThrowMSESimilarityException() \ +{ \ + if (alpha_image != (Image *) NULL) \ + alpha_image=DestroyImage(alpha_image); \ + if (beta_image != (Image *) NULL) \ + beta_image=DestroyImage(beta_image); \ + if (channel_statistics != (ChannelStatistics *) NULL) \ + channel_statistics=(ChannelStatistics *) \ + RelinquishMagickMemory(channel_statistics); \ + if (mean_image != (Image *) NULL) \ + mean_image=DestroyImage(mean_image); \ + if (mse_image != (Image *) NULL) \ + mse_image=DestroyImage(mse_image); \ + if (reconstruct_image != (Image *) NULL) \ + reconstruct_image=DestroyImage(reconstruct_image); \ + if (sum_image != (Image *) NULL) \ + sum_image=DestroyImage(sum_image); \ + if (alpha_image != (Image *) NULL) \ + alpha_image=DestroyImage(alpha_image); \ + return((Image *) NULL); \ +} + + ChannelStatistics + *channel_statistics = (ChannelStatistics *) NULL; + + double + minima = 0.0; + + Image + *alpha_image = (Image *) NULL, + *beta_image = (Image *) NULL, + *mean_image = (Image *) NULL, + *mse_image = (Image *) NULL, + *reconstruct_image = (Image *) NULL, + *sum_image = (Image *) NULL, + *test_image = (Image *) NULL; + + MagickBooleanType + status; + + RectangleInfo + geometry; + + /* + MSE correlation-based image similarity using FFT local statistics. + */ + test_image=SIMSquareImage(image,exception); + if (test_image == (Image *) NULL) + ThrowMSESimilarityException(); + reconstruct_image=SIMUnityImage(image,reconstruct,exception); + if (reconstruct_image == (Image *) NULL) + ThrowMSESimilarityException(); + /* + Create (U * test)/# pixels. + */ + alpha_image=SIMCrossCorrelationImage(test_image,reconstruct_image,exception); + test_image=DestroyImage(test_image); + if (alpha_image == (Image *) NULL) + ThrowMSESimilarityException(); + status=SIMMultiplyImage(alpha_image,1.0/reconstruct->columns/(double) + reconstruct->rows,(const ChannelStatistics *) NULL,exception); + if (status == MagickFalse) + ThrowMSESimilarityException(); + /* + Create 2*(text * reconstruction)# pixels. + */ + (void) CompositeImage(reconstruct_image,reconstruct,CopyCompositeOp, + MagickTrue,0,0,exception); + beta_image=SIMCrossCorrelationImage(image,reconstruct_image,exception); + reconstruct_image=DestroyImage(reconstruct_image); + if (beta_image == (Image *) NULL) + ThrowMSESimilarityException(); + status=SIMMultiplyImage(beta_image,-2.0/reconstruct->columns/(double) + reconstruct->rows,(const ChannelStatistics *) NULL,exception); + if (status == MagickFalse) + ThrowMSESimilarityException(); + /* + Mean of reconstruction squared. + */ + sum_image=SIMSquareImage(reconstruct,exception); + if (sum_image == (Image *) NULL) + ThrowMSESimilarityException(); + channel_statistics=GetImageStatistics(sum_image,exception); + if (channel_statistics == (ChannelStatistics *) NULL) + ThrowMSESimilarityException(); + status=SetImageExtent(sum_image,image->columns,image->rows,exception); + if (status == MagickFalse) + ThrowMSESimilarityException(); + status=SetImageStorageClass(sum_image,DirectClass,exception); + if (status == MagickFalse) + ThrowMSESimilarityException(); + status=SIMSetImageMean(sum_image,channel_statistics,exception); + channel_statistics=(ChannelStatistics *) + RelinquishMagickMemory(channel_statistics); + if (status == MagickFalse) + ThrowMSESimilarityException(); + /* + Create mean image. + */ + AppendImageToList(&sum_image,alpha_image); + AppendImageToList(&sum_image,beta_image); + mean_image=EvaluateImages(sum_image,SumEvaluateOperator,exception); + if (mean_image == (Image *) NULL) + ThrowMSESimilarityException(); + sum_image=DestroyImage(sum_image); + status=GrayscaleImage(mean_image,AveragePixelIntensityMethod,exception); + if (status == MagickFalse) + ThrowMSESimilarityException(); + mean_image->depth=MAGICKCORE_QUANTUM_DEPTH; + /* + Crop to difference of reconstruction and test images. + */ + SetGeometry(image,&geometry); + geometry.width=image->columns; + geometry.height=image->rows; + (void) ResetImagePage(mean_image,"0x0+0+0"); + mse_image=CropImage(mean_image,&geometry,exception); + mean_image=DestroyImage(mean_image); + if (mse_image == (Image *) NULL) + ThrowMSESimilarityException(); + /* + Locate minimum. + */ + (void) ResetImagePage(mse_image,"0x0+0+0"); + (void) ClampImage(mse_image,exception); + status=SIMMinimaImage(mse_image,&minima,offset,exception); + if (status == MagickFalse) + ThrowMSESimilarityException(); + status=NegateImage(mse_image,MagickFalse,exception); + if (status == MagickFalse) + ThrowMSESimilarityException(); + *similarity_metric=QuantumScale*minima; + alpha_image=DestroyImage(alpha_image); + beta_image=DestroyImage(beta_image); + return(mse_image); } -static Image *NCCSimilarityImage(const Image *image,const Image *reference, +static Image *NCCSimilarityImage(const Image *image,const Image *reconstruct, RectangleInfo *offset,double *similarity_metric,ExceptionInfo *exception) { -#define DestroySimilarityResources() \ +#define ThrowNCCSimilarityException() \ { \ + if (alpha_image != (Image *) NULL) \ + alpha_image=DestroyImage(alpha_image); \ + if (beta_image != (Image *) NULL) \ + beta_image=DestroyImage(beta_image); \ if (channel_statistics != (ChannelStatistics *) NULL) \ channel_statistics=(ChannelStatistics *) \ RelinquishMagickMemory(channel_statistics); \ - if (beta_image != (Image *) NULL) \ - beta_image=DestroyImage(beta_image); \ - if (gamma_image != (Image *) NULL) \ - gamma_image=DestroyImage(gamma_image); \ + if (correlation_image != (Image *) NULL) \ + correlation_image=DestroyImage(correlation_image); \ + if (divide_image != (Image *) NULL) \ + divide_image=DestroyImage(divide_image); \ if (ncc_image != (Image *) NULL) \ ncc_image=DestroyImage(ncc_image); \ if (normalize_image != (Image *) NULL) \ normalize_image=DestroyImage(normalize_image); \ - if (square_image != (Image *) NULL) \ - square_image=DestroyImage(square_image); \ - if (unity_image != (Image *) NULL) \ - unity_image=DestroyImage(unity_image); \ -} -#define ThrowSimilarityException() \ -{ \ - DestroySimilarityResources() \ + if (reconstruct_image != (Image *) NULL) \ + reconstruct_image=DestroyImage(reconstruct_image); \ + if (test_image != (Image *) NULL) \ + test_image=DestroyImage(test_image); \ + if (variance_image != (Image *) NULL) \ + variance_image=DestroyImage(variance_image); \ return((Image *) NULL); \ } @@ -2717,13 +3435,15 @@ static Image *NCCSimilarityImage(const Image *image,const Image *reference, maxima = 0.0; Image + *alpha_image = (Image *) NULL, *beta_image = (Image *) NULL, *correlation_image = (Image *) NULL, - *gamma_image = (Image *) NULL, + *divide_image = (Image *) NULL, *ncc_image = (Image *) NULL, *normalize_image = (Image *) NULL, - *square_image = (Image *) NULL, - *unity_image = (Image *) NULL; + *reconstruct_image = (Image *) NULL, + *test_image = (Image *) NULL, + *variance_image = (Image *) NULL; MagickBooleanType status; @@ -2732,104 +3452,534 @@ static Image *NCCSimilarityImage(const Image *image,const Image *reference, geometry; /* - Accelerated correlation-based image similary using FFT local statistics. - Contributed by Fred Weinhaus. + NCC correlation-based image similarity with FFT local statistics. */ - square_image=NCCSquareImage(image,exception); - if (square_image == (Image *) NULL) - ThrowSimilarityException(); - unity_image=NCCUnityImage(image,reference,exception); - if (unity_image == (Image *) NULL) - ThrowSimilarityException(); + test_image=SIMSquareImage(image,exception); + if (test_image == (Image *) NULL) + ThrowNCCSimilarityException(); + reconstruct_image=SIMUnityImage(image,reconstruct,exception); + if (reconstruct_image == (Image *) NULL) + ThrowNCCSimilarityException(); /* - Compute the cross correlation of the square and unity images. + Compute the cross correlation of the test and reconstruction images. */ - ncc_image=CrossCorrelationImage(square_image,unity_image,exception); - square_image=DestroyImage(square_image); - if (ncc_image == (Image *) NULL) - ThrowSimilarityException(); - status=NCCMultiplyImage(ncc_image,(double) QuantumRange*reference->columns* - reference->rows,(const ChannelStatistics *) NULL,exception); + alpha_image=SIMCrossCorrelationImage(test_image,reconstruct_image,exception); + test_image=DestroyImage(test_image); + if (alpha_image == (Image *) NULL) + ThrowNCCSimilarityException(); + status=SIMMultiplyImage(alpha_image,(double) QuantumRange* + reconstruct->columns*reconstruct->rows,(const ChannelStatistics *) NULL, + exception); if (status == MagickFalse) - ThrowSimilarityException(); + ThrowNCCSimilarityException(); /* - Compute the cross correlation of the source and unity images. + Compute the cross correlation of the source and reconstruction images. */ - gamma_image=CrossCorrelationImage(image,unity_image,exception); - unity_image=DestroyImage(unity_image); - if (gamma_image == (Image *) NULL) - ThrowSimilarityException(); - square_image=NCCSquareImage(gamma_image,exception); - gamma_image=DestroyImage(gamma_image); - status=NCCMultiplyImage(square_image,(double) QuantumRange, + beta_image=SIMCrossCorrelationImage(image,reconstruct_image,exception); + reconstruct_image=DestroyImage(reconstruct_image); + if (beta_image == (Image *) NULL) + ThrowNCCSimilarityException(); + test_image=SIMSquareImage(beta_image,exception); + beta_image=DestroyImage(beta_image); + if (test_image == (Image *) NULL) + ThrowNCCSimilarityException(); + status=SIMMultiplyImage(test_image,(double) QuantumRange, (const ChannelStatistics *) NULL,exception); if (status == MagickFalse) - ThrowSimilarityException(); + ThrowNCCSimilarityException(); /* Compute the variance of the two images. */ - gamma_image=NCCVarianceImage(ncc_image,square_image,exception); - square_image=DestroyImage(square_image); - ncc_image=DestroyImage(ncc_image); - if (gamma_image == (Image *) NULL) - ThrowSimilarityException(); - channel_statistics=GetImageStatistics(reference,exception); - if (channel_statistics == (ChannelStatistics *) NULL) - ThrowSimilarityException(); + variance_image=SIMVarianceImage(alpha_image,test_image,exception); + test_image=DestroyImage(test_image); + alpha_image=DestroyImage(alpha_image); + if (variance_image == (Image *) NULL) + ThrowNCCSimilarityException(); /* Subtract the image mean. */ - status=NCCMultiplyImage(gamma_image,1.0,channel_statistics,exception); + channel_statistics=GetImageStatistics(reconstruct,exception); + if (channel_statistics == (ChannelStatistics *) NULL) + ThrowNCCSimilarityException(); + status=SIMMultiplyImage(variance_image,1.0,channel_statistics,exception); if (status == MagickFalse) - ThrowSimilarityException(); - normalize_image=NCCSubtractImageMean(image,reference,channel_statistics, + ThrowNCCSimilarityException(); + normalize_image=SIMSubtractImageMean(image,reconstruct,channel_statistics, exception); + channel_statistics=(ChannelStatistics *) + RelinquishMagickMemory(channel_statistics); if (normalize_image == (Image *) NULL) - ThrowSimilarityException(); - ncc_image=CrossCorrelationImage(image,normalize_image,exception); + ThrowNCCSimilarityException(); + correlation_image=SIMCrossCorrelationImage(image,normalize_image,exception); normalize_image=DestroyImage(normalize_image); - if (ncc_image == (Image *) NULL) - ThrowSimilarityException(); + if (correlation_image == (Image *) NULL) + ThrowNCCSimilarityException(); /* Divide the two images. */ - beta_image=NCCDivideImage(ncc_image,gamma_image,exception); - ncc_image=DestroyImage(ncc_image); + divide_image=SIMDivideImage(correlation_image,variance_image,exception); + correlation_image=DestroyImage(correlation_image); + variance_image=DestroyImage(variance_image); + if (divide_image == (Image *) NULL) + ThrowNCCSimilarityException(); + /* + Crop padding. + */ + SetGeometry(image,&geometry); + geometry.width=image->columns; + geometry.height=image->rows; + (void) ResetImagePage(divide_image,"0x0+0+0"); + ncc_image=CropImage(divide_image,&geometry,exception); + divide_image=DestroyImage(divide_image); + if (ncc_image == (Image *) NULL) + ThrowNCCSimilarityException(); + /* + Identify the maxima value in the image and its location. + */ + (void) ResetImagePage(ncc_image,"0x0+0+0"); + status=GrayscaleImage(ncc_image,AveragePixelIntensityMethod,exception); + if (status == MagickFalse) + ThrowNCCSimilarityException(); + ncc_image->depth=MAGICKCORE_QUANTUM_DEPTH; + status=SIMMaximaImage(ncc_image,&maxima,offset,exception); + if (status == MagickFalse) + ThrowNCCSimilarityException(); + *similarity_metric=1.0-QuantumScale*maxima; + return(ncc_image); +} + +static Image *PhaseSimilarityImage(const Image *image,const Image *reconstruct, + RectangleInfo *offset,double *similarity_metric,ExceptionInfo *exception) +{ +#define ThrowPhaseSimilarityException() \ +{ \ + if (correlation_image != (Image *) NULL) \ + correlation_image=DestroyImage(correlation_image); \ + if (fft_images != (Image *) NULL) \ + fft_images=DestroyImageList(fft_images); \ + if (gamma_image != (Image *) NULL) \ + gamma_image=DestroyImage(gamma_image); \ + if (magnitude_image != (Image *) NULL) \ + magnitude_image=DestroyImage(magnitude_image); \ + if (phase_image != (Image *) NULL) \ + phase_image=DestroyImage(phase_image); \ + if (reconstruct_image != (Image *) NULL) \ + reconstruct_image=DestroyImage(reconstruct_image); \ + if (reconstruct_magnitude != (Image *) NULL) \ + reconstruct_magnitude=DestroyImage(reconstruct_magnitude); \ + if (test_image != (Image *) NULL) \ + test_image=DestroyImage(test_image); \ + if (test_magnitude != (Image *) NULL) \ + test_magnitude=DestroyImage(test_magnitude); \ + return((Image *) NULL); \ +} + + double + maxima = 0.0; + + Image + *correlation_image = (Image *) NULL, + *fft_images = (Image *) NULL, + *gamma_image = (Image *) NULL, + *magnitude_image = (Image *) NULL, + *phase_image = (Image *) NULL, + *reconstruct_image = (Image *) NULL, + *reconstruct_magnitude = (Image *) NULL, + *test_image = (Image *) NULL, + *test_magnitude = (Image *) NULL; + + MagickBooleanType + status; + + RectangleInfo + geometry; + + /* + Phase correlation-based image similarity using FFT local statistics. + */ + test_image=CloneImage(image,0,0,MagickTrue,exception); + if (test_image == (Image *) NULL) + ThrowPhaseSimilarityException(); + GetPixelInfoRGBA(0,0,0,0,&test_image->background_color); + (void) ResetImagePage(test_image,"0x0+0+0"); + status=SetImageExtent(test_image,2*(size_t) ceil((double) image->columns/2.0), + 2*(size_t) ceil((double) image->rows/2.0),exception); + if (status == MagickFalse) + ThrowPhaseSimilarityException(); + (void) SetImageAlphaChannel(test_image,OffAlphaChannel,exception); + /* + Compute the cross correlation of the test and reconstruct magnitudes. + */ + reconstruct_image=CloneImage(reconstruct,0,0,MagickTrue,exception); + if (reconstruct_image == (Image *) NULL) + ThrowPhaseSimilarityException(); + GetPixelInfoRGBA(0,0,0,0,&reconstruct_image->background_color); + (void) ResetImagePage(reconstruct_image,"0x0+0+0"); + status=SetImageExtent(reconstruct_image,2*(size_t) ceil((double) + image->columns/2.0),2*(size_t) ceil((double) image->rows/2.0),exception); + if (status == MagickFalse) + ThrowPhaseSimilarityException(); + (void) SetImageAlphaChannel(reconstruct_image,OffAlphaChannel,exception); + (void) SetImageArtifact(test_image,"fourier:normalize","inverse"); + fft_images=ForwardFourierTransformImage(test_image,MagickTrue,exception); + if (fft_images == (Image *) NULL) + ThrowPhaseSimilarityException(); + test_magnitude=CloneImage(fft_images,0,0,MagickTrue,exception); + fft_images=DestroyImageList(fft_images); + if (test_magnitude == (Image *) NULL) + ThrowPhaseSimilarityException(); + (void) SetImageArtifact(reconstruct_image,"fourier:normalize","inverse"); + fft_images=ForwardFourierTransformImage(reconstruct_image,MagickTrue, + exception); + if (fft_images == (Image *) NULL) + ThrowPhaseSimilarityException(); + reconstruct_magnitude=CloneImage(fft_images,0,0,MagickTrue,exception); + fft_images=DestroyImageList(fft_images); + if (reconstruct_magnitude == (Image *) NULL) + ThrowPhaseSimilarityException(); + magnitude_image=CloneImage(reconstruct_magnitude,0,0,MagickTrue,exception); + if (magnitude_image == (Image *) NULL) + ThrowPhaseSimilarityException(); + DisableCompositeClampUnlessSpecified(magnitude_image); + (void) CompositeImage(magnitude_image,test_magnitude,MultiplyCompositeOp, + MagickTrue,0,0,exception); + /* + Compute the cross correlation of the test and reconstruction images. + */ + correlation_image=SIMPhaseCorrelationImage(test_image,reconstruct_image, + magnitude_image,exception); + test_image=DestroyImage(test_image); + reconstruct_image=DestroyImage(reconstruct_image); + test_magnitude=DestroyImage(test_magnitude); + reconstruct_magnitude=DestroyImage(reconstruct_magnitude); + if (correlation_image == (Image *) NULL) + ThrowPhaseSimilarityException(); + /* + Identify the maxima value in the image and its location. + */ + gamma_image=CloneImage(correlation_image,0,0,MagickTrue,exception); + correlation_image=DestroyImage(correlation_image); + if (gamma_image == (Image *) NULL) + ThrowPhaseSimilarityException(); + /* + Crop padding. + */ + SetGeometry(image,&geometry); + geometry.width=image->columns; + geometry.height=image->rows; + (void) ResetImagePage(gamma_image,"0x0+0+0"); + phase_image=CropImage(gamma_image,&geometry,exception); gamma_image=DestroyImage(gamma_image); + if (phase_image == (Image *) NULL) + ThrowPhaseSimilarityException(); + (void) ResetImagePage(phase_image,"0x0+0+0"); + /* + Identify the maxima value in the image and its location. + */ + status=GrayscaleImage(phase_image,AveragePixelIntensityMethod,exception); + if (status == MagickFalse) + ThrowPhaseSimilarityException(); + phase_image->depth=MAGICKCORE_QUANTUM_DEPTH; + status=SIMMaximaImage(phase_image,&maxima,offset,exception); + if (status == MagickFalse) + ThrowPhaseSimilarityException(); + *similarity_metric=QuantumScale*maxima; + magnitude_image=DestroyImage(magnitude_image); + return(phase_image); +} + +static Image *PSNRSimilarityImage(const Image *image,const Image *reconstruct, + RectangleInfo *offset,double *similarity_metric,ExceptionInfo *exception) +{ +#define ThrowPSNRSimilarityException() \ +{ \ + if (alpha_image != (Image *) NULL) \ + alpha_image=DestroyImage(alpha_image); \ + if (beta_image != (Image *) NULL) \ + beta_image=DestroyImage(beta_image); \ + if (channel_statistics != (ChannelStatistics *) NULL) \ + channel_statistics=(ChannelStatistics *) \ + RelinquishMagickMemory(channel_statistics); \ + if (mean_image != (Image *) NULL) \ + mean_image=DestroyImage(mean_image); \ + if (psnr_image != (Image *) NULL) \ + psnr_image=DestroyImage(psnr_image); \ + if (reconstruct_image != (Image *) NULL) \ + reconstruct_image=DestroyImage(reconstruct_image); \ + if (sum_image != (Image *) NULL) \ + sum_image=DestroyImage(sum_image); \ + if (test_image != (Image *) NULL) \ + test_image=DestroyImage(test_image); \ + return((Image *) NULL); \ +} + + ChannelStatistics + *channel_statistics = (ChannelStatistics *) NULL; + + double + minima = 0.0; + + Image + *alpha_image = (Image *) NULL, + *beta_image = (Image *) NULL, + *mean_image = (Image *) NULL, + *psnr_image = (Image *) NULL, + *reconstruct_image = (Image *) NULL, + *sum_image = (Image *) NULL, + *test_image = (Image *) NULL; + + MagickBooleanType + status; + + RectangleInfo + geometry; + + /* + MSE correlation-based image similarity using FFT local statistics. + */ + test_image=SIMSquareImage(image,exception); + if (test_image == (Image *) NULL) + ThrowPSNRSimilarityException(); + reconstruct_image=SIMUnityImage(image,reconstruct,exception); + if (reconstruct_image == (Image *) NULL) + ThrowPSNRSimilarityException(); + /* + Create (U * test)/# pixels. + */ + alpha_image=SIMCrossCorrelationImage(test_image,reconstruct_image,exception); + test_image=DestroyImage(test_image); + if (alpha_image == (Image *) NULL) + ThrowPSNRSimilarityException(); + status=SIMMultiplyImage(alpha_image,1.0/reconstruct->columns/(double) + reconstruct->rows,(const ChannelStatistics *) NULL,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + /* + Create 2*(text * reconstruction)# pixels. + */ + (void) CompositeImage(reconstruct_image,reconstruct,CopyCompositeOp, + MagickTrue,0,0,exception); + beta_image=SIMCrossCorrelationImage(image,reconstruct_image,exception); + reconstruct_image=DestroyImage(reconstruct_image); if (beta_image == (Image *) NULL) - ThrowSimilarityException(); - (void) ResetImagePage(beta_image,"0x0+0+0"); + ThrowPSNRSimilarityException(); + status=SIMMultiplyImage(beta_image,-2.0/reconstruct->columns/(double) + reconstruct->rows,(const ChannelStatistics *) NULL,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + /* + Mean of reconstruction squared. + */ + sum_image=SIMSquareImage(reconstruct,exception); + if (sum_image == (Image *) NULL) + ThrowPSNRSimilarityException(); + channel_statistics=GetImageStatistics(sum_image,exception); + if (channel_statistics == (ChannelStatistics *) NULL) + ThrowPSNRSimilarityException(); + status=SetImageExtent(sum_image,image->columns,image->rows,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + status=SetImageStorageClass(sum_image,DirectClass,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + status=SIMSetImageMean(sum_image,channel_statistics,exception); + channel_statistics=(ChannelStatistics *) + RelinquishMagickMemory(channel_statistics); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + /* + Create mean image. + */ + AppendImageToList(&sum_image,alpha_image); + AppendImageToList(&sum_image,beta_image); + mean_image=EvaluateImages(sum_image,SumEvaluateOperator,exception); + if (mean_image == (Image *) NULL) + ThrowPSNRSimilarityException(); + sum_image=DestroyImage(sum_image); + status=SIMLogImage(mean_image,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + status=GrayscaleImage(mean_image,AveragePixelIntensityMethod,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + mean_image->depth=MAGICKCORE_QUANTUM_DEPTH; + status=SIMMultiplyImage(mean_image,1.0/48.1647, + (const ChannelStatistics *) NULL,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + /* + Crop to difference of reconstruction and test images. + */ SetGeometry(image,&geometry); - geometry.width=image->columns-reference->columns; - geometry.height=image->rows-reference->rows; + geometry.width=image->columns; + geometry.height=image->rows; + (void) ResetImagePage(mean_image,"0x0+0+0"); + psnr_image=CropImage(mean_image,&geometry,exception); + mean_image=DestroyImage(mean_image); + if (psnr_image == (Image *) NULL) + ThrowPSNRSimilarityException(); /* - Crop padding. + Locate minimum. */ - correlation_image=CropImage(beta_image,&geometry,exception); + (void) ResetImagePage(psnr_image,"0x0+0+0"); + (void) EvaluateImage(psnr_image,MaxEvaluateOperator,0.0,exception); + status=SIMMinimaImage(psnr_image,&minima,offset,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + status=NegateImage(psnr_image,MagickFalse,exception); + if (status == MagickFalse) + ThrowPSNRSimilarityException(); + *similarity_metric=QuantumScale*minima; + alpha_image=DestroyImage(alpha_image); beta_image=DestroyImage(beta_image); - if (correlation_image == (Image *) NULL) - ThrowSimilarityException(); - (void) ResetImagePage(correlation_image,"0x0+0+0"); + return(psnr_image); +} + +static Image *RMSESimilarityImage(const Image *image,const Image *reconstruct, + RectangleInfo *offset,double *similarity_metric,ExceptionInfo *exception) +{ +#define ThrowRMSESimilarityException() \ +{ \ + if (alpha_image != (Image *) NULL) \ + alpha_image=DestroyImage(alpha_image); \ + if (beta_image != (Image *) NULL) \ + beta_image=DestroyImage(beta_image); \ + if (channel_statistics != (ChannelStatistics *) NULL) \ + channel_statistics=(ChannelStatistics *) \ + RelinquishMagickMemory(channel_statistics); \ + if (mean_image != (Image *) NULL) \ + mean_image=DestroyImage(mean_image); \ + if (rmse_image != (Image *) NULL) \ + rmse_image=DestroyImage(rmse_image); \ + if (reconstruct_image != (Image *) NULL) \ + reconstruct_image=DestroyImage(reconstruct_image); \ + if (sum_image != (Image *) NULL) \ + sum_image=DestroyImage(sum_image); \ + if (alpha_image != (Image *) NULL) \ + alpha_image=DestroyImage(alpha_image); \ + return((Image *) NULL); \ +} + + ChannelStatistics + *channel_statistics = (ChannelStatistics *) NULL; + + double + minima = 0.0; + + Image + *alpha_image = (Image *) NULL, + *beta_image = (Image *) NULL, + *mean_image = (Image *) NULL, + *reconstruct_image = (Image *) NULL, + *rmse_image = (Image *) NULL, + *sum_image = (Image *) NULL, + *test_image = (Image *) NULL; + + MagickBooleanType + status; + + RectangleInfo + geometry; + /* - Identify the maxima value in the image and its location. + RMSE correlation-based image similarity using FFT local statistics. */ - status=GrayscaleImage(correlation_image,AveragePixelIntensityMethod, - exception); + test_image=SIMSquareImage(image,exception); + if (test_image == (Image *) NULL) + ThrowRMSESimilarityException(); + reconstruct_image=SIMUnityImage(image,reconstruct,exception); + if (reconstruct_image == (Image *) NULL) + ThrowRMSESimilarityException(); + /* + Create (U * test)/# pixels. + */ + alpha_image=SIMCrossCorrelationImage(test_image,reconstruct_image,exception); + test_image=DestroyImage(test_image); + if (alpha_image == (Image *) NULL) + ThrowRMSESimilarityException(); + status=SIMMultiplyImage(alpha_image,1.0/reconstruct->columns/(double) + reconstruct->rows,(const ChannelStatistics *) NULL,exception); if (status == MagickFalse) - ThrowSimilarityException(); - status=NCCMaximaImage(correlation_image,&maxima,offset,exception); + ThrowRMSESimilarityException(); + /* + Create 2*(text * reconstruction)# pixels. + */ + (void) CompositeImage(reconstruct_image,reconstruct,CopyCompositeOp, + MagickTrue,0,0,exception); + beta_image=SIMCrossCorrelationImage(image,reconstruct_image,exception); + reconstruct_image=DestroyImage(reconstruct_image); + if (beta_image == (Image *) NULL) + ThrowRMSESimilarityException(); + status=SIMMultiplyImage(beta_image,-2.0/reconstruct->columns/(double) + reconstruct->rows,(const ChannelStatistics *) NULL,exception); if (status == MagickFalse) - { - correlation_image=DestroyImage(correlation_image); - ThrowSimilarityException(); - } - *similarity_metric=1.0-QuantumScale*maxima; - DestroySimilarityResources(); - return(correlation_image); + ThrowRMSESimilarityException(); + /* + Mean of reconstruction squared. + */ + sum_image=SIMSquareImage(reconstruct,exception); + if (sum_image == (Image *) NULL) + ThrowRMSESimilarityException(); + channel_statistics=GetImageStatistics(sum_image,exception); + if (channel_statistics == (ChannelStatistics *) NULL) + ThrowRMSESimilarityException(); + status=SetImageExtent(sum_image,image->columns,image->rows,exception); + if (status == MagickFalse) + ThrowRMSESimilarityException(); + status=SetImageStorageClass(sum_image,DirectClass,exception); + if (status == MagickFalse) + ThrowRMSESimilarityException(); + status=SIMSetImageMean(sum_image,channel_statistics,exception); + channel_statistics=(ChannelStatistics *) + RelinquishMagickMemory(channel_statistics); + if (status == MagickFalse) + ThrowRMSESimilarityException(); + /* + Create mean image. + */ + AppendImageToList(&sum_image,alpha_image); + AppendImageToList(&sum_image,beta_image); + mean_image=EvaluateImages(sum_image,SumEvaluateOperator,exception); + if (mean_image == (Image *) NULL) + ThrowRMSESimilarityException(); + status=EvaluateImage(mean_image,PowEvaluateOperator,0.5,exception); + if (mean_image == (Image *) NULL) + ThrowRMSESimilarityException(); + sum_image=DestroyImage(sum_image); + status=GrayscaleImage(mean_image,AveragePixelIntensityMethod,exception); + if (status == MagickFalse) + ThrowRMSESimilarityException(); + mean_image->depth=MAGICKCORE_QUANTUM_DEPTH; + /* + Crop to difference of reconstruction and test images. + */ + SetGeometry(image,&geometry); + geometry.width=image->columns; + geometry.height=image->rows; + (void) ResetImagePage(mean_image,"0x0+0+0"); + rmse_image=CropImage(mean_image,&geometry,exception); + mean_image=DestroyImage(mean_image); + if (rmse_image == (Image *) NULL) + ThrowRMSESimilarityException(); + /* + Locate minimum. + */ + (void) ResetImagePage(rmse_image,"0x0+0+0"); + status=SIMMinimaImage(rmse_image,&minima,offset,exception); + if (status == MagickFalse) + ThrowRMSESimilarityException(); + status=NegateImage(rmse_image,MagickFalse,exception); + if (status == MagickFalse) + ThrowRMSESimilarityException(); + *similarity_metric=QuantumScale*minima; + alpha_image=DestroyImage(alpha_image); + beta_image=DestroyImage(beta_image); + return(rmse_image); } + #endif -static double GetSimilarityMetric(const Image *image,const Image *reference, +static double GetSimilarityMetric(const Image *image,const Image *reconstruct, const MetricType metric,const ssize_t x_offset,const ssize_t y_offset, ExceptionInfo *exception) { @@ -2845,14 +3995,14 @@ static double GetSimilarityMetric(const Image *image,const Image *reference, RectangleInfo geometry; - SetGeometry(reference,&geometry); + SetGeometry(reconstruct,&geometry); geometry.x=x_offset; geometry.y=y_offset; similarity_image=CropImage(image,&geometry,exception); if (similarity_image == (Image *) NULL) return(0.0); distortion=0.0; - status=GetImageDistortion(similarity_image,reference,metric,&distortion, + status=GetImageDistortion(similarity_image,reconstruct,metric,&distortion, exception); similarity_image=DestroyImage(similarity_image); if (status == MagickFalse) @@ -2860,7 +4010,7 @@ static double GetSimilarityMetric(const Image *image,const Image *reference, return(distortion); } -MagickExport Image *SimilarityImage(const Image *image,const Image *reference, +MagickExport Image *SimilarityImage(const Image *image,const Image *reconstruct, const MetricType metric,const double similarity_threshold, RectangleInfo *offset,double *similarity_metric,ExceptionInfo *exception) { @@ -2878,6 +4028,9 @@ MagickExport Image *SimilarityImage(const Image *image,const Image *reference, MagickOffsetType progress; + size_t + rows; + ssize_t y; @@ -2888,49 +4041,107 @@ MagickExport Image *SimilarityImage(const Image *image,const Image *reference, assert(offset != (RectangleInfo *) NULL); if (IsEventLogging() != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); - SetGeometry(reference,offset); + SetGeometry(reconstruct,offset); *similarity_metric=MagickMaximumValue; #if defined(MAGICKCORE_HDRI_SUPPORT) && defined(MAGICKCORE_FFTW_DELEGATE) +{ + const char *artifact = GetImageArtifact(image,"compare:frequency-domain"); + if (artifact == (const char *) NULL) + artifact=GetImageArtifact(image,"compare:accelerate-ncc"); if ((image->channels & ReadMaskChannel) == 0) + switch (metric) { - const char *artifact = GetImageArtifact(image,"compare:accelerate-ncc"); - MagickBooleanType accelerate = (artifact != (const char *) NULL) && - (IsStringTrue(artifact) == MagickFalse) ? MagickFalse : MagickTrue; - if ((accelerate != MagickFalse) && - (metric == NormalizedCrossCorrelationErrorMetric)) - { - similarity_image=NCCSimilarityImage(image,reference,offset, - similarity_metric,exception); - return(similarity_image); - } + case DotProductCorrelationErrorMetric: + { + similarity_image=DPCSimilarityImage(image,reconstruct,offset, + similarity_metric,exception); + return(similarity_image); + } + case MeanSquaredErrorMetric: + { + if ((artifact != (const char *) NULL) && + (IsStringTrue(artifact) == MagickFalse)) + break; + similarity_image=MSESimilarityImage(image,reconstruct,offset, + similarity_metric,exception); + return(similarity_image); + } + case NormalizedCrossCorrelationErrorMetric: + { + if ((artifact != (const char *) NULL) && + (IsStringTrue(artifact) == MagickFalse)) + break; + similarity_image=NCCSimilarityImage(image,reconstruct,offset, + similarity_metric,exception); + return(similarity_image); + } + case PeakSignalToNoiseRatioErrorMetric: + { + if ((artifact != (const char *) NULL) && + (IsStringTrue(artifact) == MagickFalse)) + break; + similarity_image=PSNRSimilarityImage(image,reconstruct,offset, + similarity_metric,exception); + return(similarity_image); + } + case PhaseCorrelationErrorMetric: + { + similarity_image=PhaseSimilarityImage(image,reconstruct,offset, + similarity_metric,exception); + return(similarity_image); + } + case RootMeanSquaredErrorMetric: + { + if ((artifact != (const char *) NULL) && + (IsStringTrue(artifact) == MagickFalse)) + break; + similarity_image=RMSESimilarityImage(image,reconstruct,offset, + similarity_metric,exception); + return(similarity_image); + } + default: break; } +} +#else + if ((metric == DotProductCorrelationErrorMetric) || + (metric == PhaseCorrelationErrorMetric)) + { + (void) ThrowMagickException(exception,GetMagickModule(), + MissingDelegateError,"DelegateLibrarySupportNotBuiltIn", + "'%s' (HDRI, FFT)",image->filename); + return((Image *) NULL); + } #endif - if ((image->columns >= reference->columns) && - (image->rows >= reference->rows)) - similarity_image=CloneImage(image,image->columns-reference->columns+1, - image->rows-reference->rows+1,MagickTrue,exception); - if (similarity_image == (Image *) NULL) - return((Image *) NULL); - status=SetImageStorageClass(similarity_image,DirectClass,exception); - if (status == MagickFalse) + if ((image->columns < reconstruct->columns) || + (image->rows < reconstruct->rows)) { - similarity_image=DestroyImage(similarity_image); + (void) ThrowMagickException(exception,GetMagickModule(),OptionWarning, + "GeometryDoesNotContainImage","`%s'",image->filename); return((Image *) NULL); } - (void) SetImageAlphaChannel(similarity_image,DeactivateAlphaChannel, + similarity_image=CloneImage(image,image->columns,image->rows,MagickTrue, exception); + if (similarity_image == (Image *) NULL) + return((Image *) NULL); + similarity_image->depth=MAGICKCORE_QUANTUM_DEPTH; + similarity_image->alpha_trait=UndefinedPixelTrait; + similarity_image->type=GrayscaleType; + status=SetImageStorageClass(similarity_image,DirectClass,exception); + if (status == MagickFalse) + return(DestroyImage(similarity_image)); /* - Measure similarity of reference image against image. + Measure similarity of reconstruction image against image. */ status=MagickTrue; progress=0; similarity_view=AcquireAuthenticCacheView(similarity_image,exception); + rows=similarity_image->rows; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp parallel for schedule(static) \ + #pragma omp parallel for schedule(static,1) \ shared(progress,status,similarity_metric) \ - magick_number_threads(image,image,image->rows-reference->rows+1,1) + magick_number_threads(similarity_image,similarity_image,rows << 3,1) #endif - for (y=0; y < (ssize_t) (image->rows-reference->rows+1); y++) + for (y=0; y < (ssize_t) rows; y++) { double similarity; @@ -2943,19 +4154,19 @@ MagickExport Image *SimilarityImage(const Image *image,const Image *reference, if (status == MagickFalse) continue; -#if defined(MAGICKCORE_OPENMP_SUPPORT) +#if defined(MMAGICKCORE_OPENMP_SUPPORT) #pragma omp flush(similarity_metric) #endif if (*similarity_metric <= similarity_threshold) continue; - q=GetCacheViewAuthenticPixels(similarity_view,0,y,similarity_image->columns, - 1,exception); + q=QueueCacheViewAuthenticPixels(similarity_view,0,y, + similarity_image->columns,1,exception); if (q == (Quantum *) NULL) { status=MagickFalse; continue; } - for (x=0; x < (ssize_t) (image->columns-reference->columns+1); x++) + for (x=0; x < (ssize_t) similarity_image->columns; x++) { ssize_t i; @@ -2965,10 +4176,10 @@ MagickExport Image *SimilarityImage(const Image *image,const Image *reference, #endif if (*similarity_metric <= similarity_threshold) break; - similarity=GetSimilarityMetric(image,reference,metric,x,y,exception); - if (metric == PeakSignalToNoiseRatioErrorMetric) - similarity*=0.01; - if ((metric == NormalizedCrossCorrelationErrorMetric) || + similarity=GetSimilarityMetric(image,reconstruct,metric,x,y,exception); + if ((metric == DotProductCorrelationErrorMetric) || + (metric == PhaseCorrelationErrorMetric) || + (metric == NormalizedCrossCorrelationErrorMetric) || (metric == UndefinedErrorMetric)) similarity=1.0-similarity; #if defined(MAGICKCORE_OPENMP_SUPPORT) @@ -2992,8 +4203,16 @@ MagickExport Image *SimilarityImage(const Image *image,const Image *reference, (similarity_traits == UndefinedPixelTrait) || ((similarity_traits & UpdatePixelTrait) == 0)) continue; + if ((metric == MeanSquaredErrorMetric) || + (metric == NormalizedCrossCorrelationErrorMetric) || + (metric == RootMeanSquaredErrorMetric)) + { + SetPixelChannel(similarity_image,channel,ClampToQuantum((double) + QuantumRange-QuantumRange*similarity),q); + continue; + } SetPixelChannel(similarity_image,channel,ClampToQuantum((double) - QuantumRange-(double) QuantumRange*similarity),q); + QuantumRange*similarity),q); } q+=(ptrdiff_t) GetPixelChannels(similarity_image); } diff --git a/ImageMagick-7.1.1-43/MagickCore/compare.h b/ImageMagick-7.1.1-44/MagickCore/compare.h similarity index 94% rename from ImageMagick-7.1.1-43/MagickCore/compare.h rename to ImageMagick-7.1.1-44/MagickCore/compare.h index 799200a4d..a1aa6302a 100644 --- a/ImageMagick-7.1.1-43/MagickCore/compare.h +++ b/ImageMagick-7.1.1-44/MagickCore/compare.h @@ -38,7 +38,9 @@ typedef enum PerceptualHashErrorMetric, RootMeanSquaredErrorMetric, StructuralSimilarityErrorMetric, - StructuralDissimilarityErrorMetric + StructuralDissimilarityErrorMetric, + PhaseCorrelationErrorMetric, + DotProductCorrelationErrorMetric } MetricType; extern MagickExport double diff --git a/ImageMagick-7.1.1-43/MagickCore/composite-private.h b/ImageMagick-7.1.1-44/MagickCore/composite-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/composite-private.h rename to ImageMagick-7.1.1-44/MagickCore/composite-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/composite.c b/ImageMagick-7.1.1-44/MagickCore/composite.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/composite.c rename to ImageMagick-7.1.1-44/MagickCore/composite.c index a5dfedc3c..8131a5f53 100644 --- a/ImageMagick-7.1.1-43/MagickCore/composite.c +++ b/ImageMagick-7.1.1-44/MagickCore/composite.c @@ -978,7 +978,7 @@ static MagickBooleanType CompositeOverImage(Image *image, { if (y < y_offset) continue; - if ((y-(double) y_offset) >= (double) source_image->rows) + if ((y-y_offset) >= (ssize_t) source_image->rows) continue; } /* @@ -987,10 +987,10 @@ static MagickBooleanType CompositeOverImage(Image *image, pixels=(Quantum *) NULL; p=(Quantum *) NULL; if ((y >= y_offset) && - ((y-(double) y_offset) < (double) source_image->rows)) + ((y-y_offset) < (ssize_t) source_image->rows)) { p=GetCacheViewVirtualPixels(source_view,0, - CastDoubleToLong(y-(double) y_offset),source_image->columns,1, + CastDoubleToLong((double) y-y_offset),source_image->columns,1, exception); if (p == (const Quantum *) NULL) { @@ -1036,11 +1036,11 @@ static MagickBooleanType CompositeOverImage(Image *image, q+=(ptrdiff_t) GetPixelChannels(image); continue; } - if ((x-(double) x_offset) >= (double) source_image->columns) + if ((x-x_offset) >= (ssize_t) source_image->columns) break; } if ((pixels == (Quantum *) NULL) || (x < x_offset) || - ((x-(double) x_offset) >= (double) source_image->columns)) + ((x-x_offset) >= (ssize_t) source_image->columns)) { Quantum source[MaxPixelChannels]; @@ -1051,8 +1051,8 @@ static MagickBooleanType CompositeOverImage(Image *image, Dc: canvas color. */ (void) GetOneVirtualPixel(source_image, - CastDoubleToLong(x-(double) x_offset), - CastDoubleToLong(y-(double) y_offset),source,exception); + CastDoubleToLong((double) x-x_offset), + CastDoubleToLong((double) y-y_offset),source,exception); for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -1184,7 +1184,7 @@ static MagickBooleanType SaliencyBlendImage(Image *image, y_offset }; - size_t + ssize_t i; /* @@ -1236,7 +1236,7 @@ static MagickBooleanType SaliencyBlendImage(Image *image, verbose=IsStringTrue(GetImageArtifact(image,"verbose")); if (verbose != MagickFalse) (void) FormatLocaleFile(stderr,"saliency blending:\n"); - for (i=0; i < iterations; i++) + for (i=0; i < (ssize_t) iterations; i++) { double residual = 1.0; @@ -1316,7 +1316,7 @@ static MagickBooleanType SeamlessBlendImage(Image *image, y_offset }; - size_t + ssize_t i; /* @@ -1369,7 +1369,7 @@ static MagickBooleanType SeamlessBlendImage(Image *image, verbose=IsStringTrue(GetImageArtifact(image,"verbose")); if (verbose != MagickFalse) (void) FormatLocaleFile(stderr,"seamless blending:\n"); - for (i=0; i < iterations; i++) + for (i=0; i < (ssize_t) iterations; i++) { double residual = 1.0; @@ -2241,7 +2241,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image, { if (y < y_offset) continue; - if ((y-(double) y_offset) >= (double) source_image->rows) + if ((y-y_offset) >= (ssize_t) source_image->rows) continue; } /* @@ -2250,10 +2250,10 @@ MagickExport MagickBooleanType CompositeImage(Image *image, pixels=(Quantum *) NULL; p=(Quantum *) NULL; if ((y >= y_offset) && - ((y-(double) y_offset) < (double) source_image->rows)) + ((y-y_offset) < (ssize_t) source_image->rows)) { p=GetCacheViewVirtualPixels(source_view,0, - CastDoubleToLong(y-(double) y_offset),source_image->columns,1, + CastDoubleToLong((double) y-y_offset),source_image->columns,1, exception); if (p == (const Quantum *) NULL) { @@ -2262,7 +2262,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image, } pixels=p; if (x_offset < 0) - p-=(ptrdiff_t)CastDoubleToLong((double) x_offset*GetPixelChannels(source_image)); + p-=(ptrdiff_t) CastDoubleToLong((double) x_offset*GetPixelChannels(source_image)); } q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception); if (q == (Quantum *) NULL) @@ -2303,11 +2303,11 @@ MagickExport MagickBooleanType CompositeImage(Image *image, q+=(ptrdiff_t) GetPixelChannels(image); continue; } - if ((x-(double) x_offset) >= (double) source_image->columns) + if ((x-x_offset) >= (ssize_t) source_image->columns) break; } if ((pixels == (Quantum *) NULL) || (x < x_offset) || - ((x-(double) x_offset) >= (double) source_image->columns)) + ((x-x_offset) >= (ssize_t) source_image->columns)) { Quantum source[MaxPixelChannels]; @@ -2318,8 +2318,8 @@ MagickExport MagickBooleanType CompositeImage(Image *image, Dc: canvas color. */ (void) GetOneVirtualPixel(source_image, - CastDoubleToLong(x-(double) x_offset), - CastDoubleToLong(y-(double) y_offset),source,exception); + CastDoubleToLong((double) x-x_offset), + CastDoubleToLong((double) y-y_offset),source,exception); for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType diff --git a/ImageMagick-7.1.1-43/MagickCore/composite.h b/ImageMagick-7.1.1-44/MagickCore/composite.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/composite.h rename to ImageMagick-7.1.1-44/MagickCore/composite.h diff --git a/ImageMagick-7.1.1-43/MagickCore/compress.c b/ImageMagick-7.1.1-44/MagickCore/compress.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/compress.c rename to ImageMagick-7.1.1-44/MagickCore/compress.c diff --git a/ImageMagick-7.1.1-43/MagickCore/compress.h b/ImageMagick-7.1.1-44/MagickCore/compress.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/compress.h rename to ImageMagick-7.1.1-44/MagickCore/compress.h diff --git a/ImageMagick-7.1.1-43/MagickCore/configure-private.h b/ImageMagick-7.1.1-44/MagickCore/configure-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/configure-private.h rename to ImageMagick-7.1.1-44/MagickCore/configure-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/configure.c b/ImageMagick-7.1.1-44/MagickCore/configure.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/configure.c rename to ImageMagick-7.1.1-44/MagickCore/configure.c diff --git a/ImageMagick-7.1.1-43/MagickCore/configure.h b/ImageMagick-7.1.1-44/MagickCore/configure.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/configure.h rename to ImageMagick-7.1.1-44/MagickCore/configure.h diff --git a/ImageMagick-7.1.1-43/MagickCore/constitute-private.h b/ImageMagick-7.1.1-44/MagickCore/constitute-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/constitute-private.h rename to ImageMagick-7.1.1-44/MagickCore/constitute-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/constitute.c b/ImageMagick-7.1.1-44/MagickCore/constitute.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/constitute.c rename to ImageMagick-7.1.1-44/MagickCore/constitute.c index 03fd3ef97..40d150073 100644 --- a/ImageMagick-7.1.1-43/MagickCore/constitute.c +++ b/ImageMagick-7.1.1-44/MagickCore/constitute.c @@ -861,6 +861,10 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, next->magick_columns=next->columns; if (next->magick_rows == 0) next->magick_rows=next->rows; + if ((magick_info != (const MagickInfo *) NULL) && + (magick_info->mime_type != (const char *) NULL)) + (void) SetImageProperty(next,"mime:type",magick_info->mime_type, + exception); (void) GetImageProperty(next,"exif:*",exception); (void) GetImageProperty(next,"icc:*",exception); (void) GetImageProperty(next,"iptc:*",exception); diff --git a/ImageMagick-7.1.1-43/MagickCore/constitute.h b/ImageMagick-7.1.1-44/MagickCore/constitute.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/constitute.h rename to ImageMagick-7.1.1-44/MagickCore/constitute.h diff --git a/ImageMagick-7.1.1-43/MagickCore/decorate.c b/ImageMagick-7.1.1-44/MagickCore/decorate.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/decorate.c rename to ImageMagick-7.1.1-44/MagickCore/decorate.c diff --git a/ImageMagick-7.1.1-43/MagickCore/decorate.h b/ImageMagick-7.1.1-44/MagickCore/decorate.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/decorate.h rename to ImageMagick-7.1.1-44/MagickCore/decorate.h diff --git a/ImageMagick-7.1.1-43/MagickCore/delegate-private.h b/ImageMagick-7.1.1-44/MagickCore/delegate-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/delegate-private.h rename to ImageMagick-7.1.1-44/MagickCore/delegate-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/delegate.c b/ImageMagick-7.1.1-44/MagickCore/delegate.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/delegate.c rename to ImageMagick-7.1.1-44/MagickCore/delegate.c index d0ed400ce..56168ae03 100644 --- a/ImageMagick-7.1.1-43/MagickCore/delegate.c +++ b/ImageMagick-7.1.1-44/MagickCore/delegate.c @@ -108,7 +108,8 @@ static const char " " " " " " - " " + " " + " " " " " " " " @@ -425,7 +426,7 @@ MagickExport int ExternalDelegateCommand(const MagickBooleanType asynchronous, offset = 0; while ((offset < MagickPathExtent) && - (fgets(message+offset,MagickPathExtent-offset,file) != NULL)) + (fgets(message+offset,(int) (MagickPathExtent-offset),file) != NULL)) offset+=strlen(message); status=pclose(file); } diff --git a/ImageMagick-7.1.1-43/MagickCore/delegate.h b/ImageMagick-7.1.1-44/MagickCore/delegate.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/delegate.h rename to ImageMagick-7.1.1-44/MagickCore/delegate.h diff --git a/ImageMagick-7.1.1-43/MagickCore/deprecate.c b/ImageMagick-7.1.1-44/MagickCore/deprecate.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/deprecate.c rename to ImageMagick-7.1.1-44/MagickCore/deprecate.c diff --git a/ImageMagick-7.1.1-43/MagickCore/deprecate.h b/ImageMagick-7.1.1-44/MagickCore/deprecate.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/deprecate.h rename to ImageMagick-7.1.1-44/MagickCore/deprecate.h diff --git a/ImageMagick-7.1.1-43/MagickCore/display-private.h b/ImageMagick-7.1.1-44/MagickCore/display-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/display-private.h rename to ImageMagick-7.1.1-44/MagickCore/display-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/display.c b/ImageMagick-7.1.1-44/MagickCore/display.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/display.c rename to ImageMagick-7.1.1-44/MagickCore/display.c index 83463c9b2..ffce7c5c1 100644 --- a/ImageMagick-7.1.1-43/MagickCore/display.c +++ b/ImageMagick-7.1.1-44/MagickCore/display.c @@ -5048,15 +5048,15 @@ static MagickBooleanType XCropImage(Display *display, } if ((x < (int) (crop_info.x+RoiDelta)) && (x > (int) (crop_info.x-RoiDelta)) && - (y < (crop_info.y+(int) crop_info.height+RoiDelta)) && - (y > (crop_info.y+(int) crop_info.height-RoiDelta))) + (y < (int) (crop_info.y+(int) crop_info.height+RoiDelta)) && + (y > (int) (crop_info.y+(int) crop_info.height-RoiDelta))) { crop_info.x=(crop_info.x+(int) crop_info.width); state|=UpdateConfigurationState; break; } - if ((x < (crop_info.x+(int) crop_info.width+RoiDelta)) && - (x > (crop_info.x+(int) crop_info.width-RoiDelta)) && + if ((x < (int) (crop_info.x+(int) crop_info.width+RoiDelta)) && + (x > (int) (crop_info.x+(int) crop_info.width-RoiDelta)) && (y < (int) (crop_info.y+RoiDelta)) && (y > (int) (crop_info.y-RoiDelta))) { @@ -5064,10 +5064,10 @@ static MagickBooleanType XCropImage(Display *display, state|=UpdateConfigurationState; break; } - if ((x < (crop_info.x+(int) crop_info.width+RoiDelta)) && - (x > (crop_info.x+(int) crop_info.width-RoiDelta)) && - (y < (crop_info.y+(int) crop_info.height+RoiDelta)) && - (y > (crop_info.y+(int) crop_info.height-RoiDelta))) + if ((x < (int) (crop_info.x+(int) crop_info.width+RoiDelta)) && + (x > (int) (crop_info.x+(int) crop_info.width-RoiDelta)) && + (y < (int) (crop_info.y+(int) crop_info.height+RoiDelta)) && + (y > (int) (crop_info.y+(int) crop_info.height-RoiDelta))) { state|=UpdateConfigurationState; break; @@ -7001,8 +7001,8 @@ static DisplayCommand XImageWindowCommand(Display *display, } if ((key_symbol == XK_Down) || (key_symbol == XK_KP_Down)) { - if (resource_info->quantum >= ((int) crop_info.height-crop_info.y)) - resource_info->quantum=(int) crop_info.height-crop_info.y-1; + if (resource_info->quantum >= (int) (crop_info.height-(ssize_t) crop_info.y)) + resource_info->quantum=(int) (crop_info.height-(ssize_t) crop_info.y-1); crop_info.y+=resource_info->quantum; crop_info.height-=(size_t) resource_info->quantum; } @@ -7014,8 +7014,8 @@ static DisplayCommand XImageWindowCommand(Display *display, } if ((key_symbol == XK_Right) || (key_symbol == XK_KP_Right)) { - if (resource_info->quantum >= ((int) crop_info.width-crop_info.x)) - resource_info->quantum=(int) crop_info.width-crop_info.x-1; + if (resource_info->quantum >= (int) (crop_info.width-(ssize_t) crop_info.x)) + resource_info->quantum=(int) (crop_info.width-(ssize_t) crop_info.x-1); crop_info.x+=resource_info->quantum; crop_info.width-=(size_t) resource_info->quantum; } @@ -10491,24 +10491,24 @@ static void XPanImage(Display *display,XWindows *windows,XEvent *event, if (pan_info.x < (ssize_t) (pan_info.width/2)) pan_info.x=0; else - pan_info.x=(x_factor*(pan_info.x-((int) pan_info.width/2))); + pan_info.x=(ssize_t) (x_factor*(pan_info.x-((int) pan_info.width/2))); if (pan_info.x < 0) pan_info.x=0; else if ((int) (pan_info.x+windows->image.width) > windows->image.ximage->width) - pan_info.x=windows->image.ximage->width-(int) windows->image.width; + pan_info.x=(ssize_t) (windows->image.ximage->width-(int) windows->image.width); if (pan_info.y < (ssize_t) (pan_info.height/2)) pan_info.y=0; else - pan_info.y=(y_factor*(pan_info.y-((int) pan_info.height/2))); + pan_info.y=(ssize_t) (y_factor*(pan_info.y-((int) pan_info.height/2))); if (pan_info.y < 0) pan_info.y=0; else if ((int) (pan_info.y+windows->image.height) > windows->image.ximage->height) - pan_info.y=windows->image.ximage->height-(int) - windows->image.height; + pan_info.y=(ssize_t) (windows->image.ximage->height-(int) + windows->image.height); if ((windows->image.x != (int) pan_info.x) || (windows->image.y != (int) pan_info.y)) { @@ -11765,15 +11765,15 @@ static MagickBooleanType XROIImage(Display *display, } if ((x < (int) (roi_info.x+RoiDelta)) && (x > (int) (roi_info.x-RoiDelta)) && - (y < (roi_info.y+(int) roi_info.height+RoiDelta)) && - (y > (roi_info.y+(int) roi_info.height-RoiDelta))) + (y < (int) (roi_info.y+(int) roi_info.height+RoiDelta)) && + (y > (int) (roi_info.y+(int) roi_info.height-RoiDelta))) { roi_info.x=roi_info.x+(int) roi_info.width; state|=UpdateConfigurationState; break; } - if ((x < (roi_info.x+(int) roi_info.width+RoiDelta)) && - (x > (roi_info.x+(int) roi_info.width-RoiDelta)) && + if ((x < (int) (roi_info.x+(int) roi_info.width+RoiDelta)) && + (x > (int) (roi_info.x+(int) roi_info.width-RoiDelta)) && (y < (int) (roi_info.y+RoiDelta)) && (y > (int) (roi_info.y-RoiDelta))) { @@ -11781,10 +11781,10 @@ static MagickBooleanType XROIImage(Display *display, state|=UpdateConfigurationState; break; } - if ((x < (roi_info.x+(int) roi_info.width+RoiDelta)) && - (x > (roi_info.x+(int) roi_info.width-RoiDelta)) && - (y < (roi_info.y+(int) roi_info.height+RoiDelta)) && - (y > (roi_info.y+(int) roi_info.height-RoiDelta))) + if ((x < (int) (roi_info.x+(int) roi_info.width+RoiDelta)) && + (x > (int) (roi_info.x+(int) roi_info.width-RoiDelta)) && + (y < (int) (roi_info.y+(int) roi_info.height+RoiDelta)) && + (y > (int) (roi_info.y+(int) roi_info.height-RoiDelta))) { state|=UpdateConfigurationState; break; diff --git a/ImageMagick-7.1.1-43/MagickCore/display.h b/ImageMagick-7.1.1-44/MagickCore/display.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/display.h rename to ImageMagick-7.1.1-44/MagickCore/display.h diff --git a/ImageMagick-7.1.1-43/MagickCore/distort.c b/ImageMagick-7.1.1-44/MagickCore/distort.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/distort.c rename to ImageMagick-7.1.1-44/MagickCore/distort.c index 6d842755a..04872c8fa 100644 --- a/ImageMagick-7.1.1-43/MagickCore/distort.c +++ b/ImageMagick-7.1.1-44/MagickCore/distort.c @@ -2379,6 +2379,7 @@ MagickExport Image *DistortImage(const Image *image, DistortMethod method, method == BarrelDistortion ? "*" : "/",coeff[4],coeff[5],coeff[6], coeff[7]); (void) FormatLocaleFile(stderr," p{ii+xc,jj+yc}' \\\n"); + break; } default: break; diff --git a/ImageMagick-7.1.1-43/MagickCore/distort.h b/ImageMagick-7.1.1-44/MagickCore/distort.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/distort.h rename to ImageMagick-7.1.1-44/MagickCore/distort.h diff --git a/ImageMagick-7.1.1-43/MagickCore/distribute-cache-private.h b/ImageMagick-7.1.1-44/MagickCore/distribute-cache-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/distribute-cache-private.h rename to ImageMagick-7.1.1-44/MagickCore/distribute-cache-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/distribute-cache.c b/ImageMagick-7.1.1-44/MagickCore/distribute-cache.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/distribute-cache.c rename to ImageMagick-7.1.1-44/MagickCore/distribute-cache.c index d19e96763..b0f786d4f 100644 --- a/ImageMagick-7.1.1-43/MagickCore/distribute-cache.c +++ b/ImageMagick-7.1.1-44/MagickCore/distribute-cache.c @@ -292,7 +292,7 @@ static int ConnectPixelCacheServer(const char *hostname,const int port, return(-1); } nonce=StringToStringInfo(shared_secret); - if (GetMagickSignature(nonce) != *session_key) + if ((size_t) GetMagickSignature(nonce) != *session_key) { CLOSE_SOCKET(client_socket); (void) ThrowMagickException(exception,GetMagickModule(),CacheError, @@ -487,7 +487,7 @@ static inline MagickOffsetType dpc_send(int file,const MagickSizeType length, count=0; for (i=0; i < (MagickOffsetType) length; i+=count) { - count=(MagickOffsetType) send(file,(char *) message+i,(LENGTH_TYPE) + count=(ssize_t) send(file,(char *) message+i,(LENGTH_TYPE) MagickMin(length-(MagickSizeType) i,(MagickSizeType) MagickMaxBufferExtent), MSG_NOSIGNAL); if (count <= 0) diff --git a/ImageMagick-7.1.1-43/MagickCore/distribute-cache.h b/ImageMagick-7.1.1-44/MagickCore/distribute-cache.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/distribute-cache.h rename to ImageMagick-7.1.1-44/MagickCore/distribute-cache.h diff --git a/ImageMagick-7.1.1-43/MagickCore/draw-private.h b/ImageMagick-7.1.1-44/MagickCore/draw-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/draw-private.h rename to ImageMagick-7.1.1-44/MagickCore/draw-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/draw.c b/ImageMagick-7.1.1-44/MagickCore/draw.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/draw.c rename to ImageMagick-7.1.1-44/MagickCore/draw.c index 66576754b..19b7d7060 100644 --- a/ImageMagick-7.1.1-43/MagickCore/draw.c +++ b/ImageMagick-7.1.1-44/MagickCore/draw.c @@ -1238,8 +1238,8 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image, inverse_affine=InverseAffineMatrix(affine); if (edge.y1 < 0.0) edge.y1=0.0; - if (edge.y2 > (image->rows-1.0)) - edge.y2=image->rows-1.0; + if (edge.y2 > ((double) image->rows-1.0)) + edge.y2=(double) image->rows-1.0; GetPixelInfo(image,&zero); start=CastDoubleToLong(ceil(edge.y1-0.5)); stop=CastDoubleToLong(floor(edge.y2+0.5)); @@ -1274,8 +1274,8 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image, continue; if (inverse_edge.x1 < 0.0) inverse_edge.x1=0.0; - if (inverse_edge.x2 > image->columns-1.0) - inverse_edge.x2=image->columns-1.0; + if (inverse_edge.x2 > ((double) image->columns-1.0)) + inverse_edge.x2=(double) image->columns-1.0; q=GetCacheViewAuthenticPixels(image_view,CastDoubleToLong( ceil(inverse_edge.x1-0.5)),y,(size_t) CastDoubleToLong(floor( inverse_edge.x2+0.5)-ceil(inverse_edge.x1-0.5)+1),1,exception); @@ -2755,10 +2755,10 @@ static MagickBooleanType RenderMVGContent(Image *image, /* Identify recursion. */ - for (i=0; i < n; i++) + for (i=0; i <= n; i++) if (LocaleCompare(token,graphic_context[i]->id) == 0) break; - if (i < n) + if (i <= n) break; mvg_class=(const char *) GetValueFromSplayTree(macros,token); if ((graphic_context[n]->render != MagickFalse) && @@ -2773,6 +2773,7 @@ static MagickBooleanType RenderMVGContent(Image *image, /* Inject class elements in stream. */ + (void) CloneString(&graphic_context[n]->id,token); offset=(ssize_t) (p-primitive); elements=AcquireString(primitive); elements[offset]='\0'; @@ -5643,8 +5644,8 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, else if (*primitive_info->text != '\0') { - const MagickInfo - *magick_info; + const char + *option; MagickBooleanType path_status; @@ -5658,15 +5659,23 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, (void) CopyMagickString(clone_info->filename,primitive_info->text, MagickPathExtent); (void) SetImageInfo(clone_info,1,exception); - magick_info=GetMagickInfo(clone_info->magick,exception); - if ((magick_info != (const MagickInfo*) NULL) && - (LocaleCompare(magick_info->magick_module,"SVG") == 0)) + option=GetImageOption(clone_info,"svg:embedding"); + if ((option == (char *) NULL) && + (IsStringTrue(option) == MagickFalse)) { - (void) ThrowMagickException(exception,GetMagickModule(), - CorruptImageError,"ImageTypeNotSupported","`%s'", - clone_info->filename); - clone_info=DestroyImageInfo(clone_info); - break; + const MagickInfo + *magick_info; + + magick_info=GetMagickInfo(clone_info->magick,exception); + if ((magick_info != (const MagickInfo*) NULL) && + (LocaleCompare(magick_info->magick_module,"SVG") == 0)) + { + (void) ThrowMagickException(exception,GetMagickModule(), + CorruptImageError,"ImageTypeNotSupported","`%s'", + clone_info->filename); + clone_info=DestroyImageInfo(clone_info); + break; + } } (void) CopyMagickString(clone_info->filename,primitive_info->text, MagickPathExtent); @@ -5687,7 +5696,8 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, else if ((LocaleCompare(clone_info->magick,"ftp") != 0) && (LocaleCompare(clone_info->magick,"http") != 0) && - (LocaleCompare(clone_info->magick,"https") != 0)) + (LocaleCompare(clone_info->magick,"https") != 0) && + (LocaleCompare(clone_info->magick,"vid") != 0)) composite_images=ReadImage(clone_info,exception); else (void) ThrowMagickException(exception,GetMagickModule(), diff --git a/ImageMagick-7.1.1-43/MagickCore/draw.h b/ImageMagick-7.1.1-44/MagickCore/draw.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/draw.h rename to ImageMagick-7.1.1-44/MagickCore/draw.h diff --git a/ImageMagick-7.1.1-43/MagickCore/effect.c b/ImageMagick-7.1.1-44/MagickCore/effect.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/effect.c rename to ImageMagick-7.1.1-44/MagickCore/effect.c index a58e16f76..4d90cdca4 100644 --- a/ImageMagick-7.1.1-43/MagickCore/effect.c +++ b/ImageMagick-7.1.1-44/MagickCore/effect.c @@ -1225,7 +1225,7 @@ static void Hull(const Image *image,const ssize_t x_offset, assert(image->signature == MagickCoreSignature); assert(f != (Quantum *) NULL); assert(g != (Quantum *) NULL); - assert(columns <= (MAGICK_SSIZE_MAX-2)); + assert(columns <= (size_t) (MAGICK_SSIZE_MAX-2)); if (IsEventLogging() != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); p=f+(ptrdiff_t) (columns+2); diff --git a/ImageMagick-7.1.1-43/MagickCore/effect.h b/ImageMagick-7.1.1-44/MagickCore/effect.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/effect.h rename to ImageMagick-7.1.1-44/MagickCore/effect.h diff --git a/ImageMagick-7.1.1-43/MagickCore/enhance.c b/ImageMagick-7.1.1-44/MagickCore/enhance.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/enhance.c rename to ImageMagick-7.1.1-44/MagickCore/enhance.c diff --git a/ImageMagick-7.1.1-43/MagickCore/enhance.h b/ImageMagick-7.1.1-44/MagickCore/enhance.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/enhance.h rename to ImageMagick-7.1.1-44/MagickCore/enhance.h diff --git a/ImageMagick-7.1.1-43/MagickCore/exception-private.h b/ImageMagick-7.1.1-44/MagickCore/exception-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/exception-private.h rename to ImageMagick-7.1.1-44/MagickCore/exception-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/exception.c b/ImageMagick-7.1.1-44/MagickCore/exception.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/exception.c rename to ImageMagick-7.1.1-44/MagickCore/exception.c diff --git a/ImageMagick-7.1.1-43/MagickCore/exception.h b/ImageMagick-7.1.1-44/MagickCore/exception.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/exception.h rename to ImageMagick-7.1.1-44/MagickCore/exception.h diff --git a/ImageMagick-7.1.1-43/MagickCore/feature.c b/ImageMagick-7.1.1-44/MagickCore/feature.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/feature.c rename to ImageMagick-7.1.1-44/MagickCore/feature.c index c16db3490..18bd8af08 100644 --- a/ImageMagick-7.1.1-43/MagickCore/feature.c +++ b/ImageMagick-7.1.1-44/MagickCore/feature.c @@ -506,7 +506,7 @@ MagickExport Image *CannyEdgeImage(const Image *image,const double radius, if (pixel.intensity > max) max=pixel.intensity; } - *q=0; + *q=(Quantum) 0; q+=(ptrdiff_t) GetPixelChannels(edge_image); } if (SyncCacheViewAuthenticPixels(edge_view,exception) == MagickFalse) diff --git a/ImageMagick-7.1.1-43/MagickCore/feature.h b/ImageMagick-7.1.1-44/MagickCore/feature.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/feature.h rename to ImageMagick-7.1.1-44/MagickCore/feature.h diff --git a/ImageMagick-7.1.1-43/MagickCore/fourier.c b/ImageMagick-7.1.1-44/MagickCore/fourier.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/fourier.c rename to ImageMagick-7.1.1-44/MagickCore/fourier.c diff --git a/ImageMagick-7.1.1-43/MagickCore/fourier.h b/ImageMagick-7.1.1-44/MagickCore/fourier.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/fourier.h rename to ImageMagick-7.1.1-44/MagickCore/fourier.h diff --git a/ImageMagick-7.1.1-43/MagickCore/fx-private.h b/ImageMagick-7.1.1-44/MagickCore/fx-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/fx-private.h rename to ImageMagick-7.1.1-44/MagickCore/fx-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/fx.c b/ImageMagick-7.1.1-44/MagickCore/fx.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/fx.c rename to ImageMagick-7.1.1-44/MagickCore/fx.c diff --git a/ImageMagick-7.1.1-43/MagickCore/fx.h b/ImageMagick-7.1.1-44/MagickCore/fx.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/fx.h rename to ImageMagick-7.1.1-44/MagickCore/fx.h diff --git a/ImageMagick-7.1.1-43/MagickCore/gem-private.h b/ImageMagick-7.1.1-44/MagickCore/gem-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/gem-private.h rename to ImageMagick-7.1.1-44/MagickCore/gem-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/gem.c b/ImageMagick-7.1.1-44/MagickCore/gem.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/gem.c rename to ImageMagick-7.1.1-44/MagickCore/gem.c diff --git a/ImageMagick-7.1.1-43/MagickCore/gem.h b/ImageMagick-7.1.1-44/MagickCore/gem.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/gem.h rename to ImageMagick-7.1.1-44/MagickCore/gem.h diff --git a/ImageMagick-7.1.1-43/MagickCore/geometry-private.h b/ImageMagick-7.1.1-44/MagickCore/geometry-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/geometry-private.h rename to ImageMagick-7.1.1-44/MagickCore/geometry-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/geometry.c b/ImageMagick-7.1.1-44/MagickCore/geometry.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/geometry.c rename to ImageMagick-7.1.1-44/MagickCore/geometry.c index c5588604d..80df7c58a 100644 --- a/ImageMagick-7.1.1-43/MagickCore/geometry.c +++ b/ImageMagick-7.1.1-44/MagickCore/geometry.c @@ -564,7 +564,8 @@ MagickExport void GravityAdjustGeometry(const size_t width, case SouthGravity: case CenterGravity: { - region->x=CastDoubleToLong(width/2.0-region->width/2.0+region->x); + region->x=CastDoubleToLong((double) width/2.0-region->width/2.0+ + region->x); break; } case ForgetGravity: @@ -587,7 +588,8 @@ MagickExport void GravityAdjustGeometry(const size_t width, case WestGravity: case CenterGravity: { - region->y=CastDoubleToLong(height/2.0-region->height/2.0+region->y); + region->y=CastDoubleToLong((double) height/2.0-region->height/2.0+ + region->y); break; } case ForgetGravity: @@ -1636,9 +1638,9 @@ MagickExport MagickStatusType ParseMetaGeometry(const char *geometry,ssize_t *x, PerceptibleReciprocal(sqrt(area))); if ((scale.x < (double) *width) || (scale.y < (double) *height)) { - *width=CastDoubleToUnsigned(stasis_width*PerceptibleReciprocal( + *width=CastDoubleToUnsigned((double) stasis_width*PerceptibleReciprocal( distance*PerceptibleReciprocal(sqrt(area)))+0.5); - *height=CastDoubleToUnsigned(stasis_height*PerceptibleReciprocal( + *height=CastDoubleToUnsigned((double) stasis_height*PerceptibleReciprocal( distance*PerceptibleReciprocal(sqrt(area)))+0.5); } } diff --git a/ImageMagick-7.1.1-43/MagickCore/geometry.h b/ImageMagick-7.1.1-44/MagickCore/geometry.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/geometry.h rename to ImageMagick-7.1.1-44/MagickCore/geometry.h diff --git a/ImageMagick-7.1.1-43/MagickCore/histogram.c b/ImageMagick-7.1.1-44/MagickCore/histogram.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/histogram.c rename to ImageMagick-7.1.1-44/MagickCore/histogram.c diff --git a/ImageMagick-7.1.1-43/MagickCore/histogram.h b/ImageMagick-7.1.1-44/MagickCore/histogram.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/histogram.h rename to ImageMagick-7.1.1-44/MagickCore/histogram.h diff --git a/ImageMagick-7.1.1-43/MagickCore/identify.c b/ImageMagick-7.1.1-44/MagickCore/identify.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/identify.c rename to ImageMagick-7.1.1-44/MagickCore/identify.c diff --git a/ImageMagick-7.1.1-43/MagickCore/identify.h b/ImageMagick-7.1.1-44/MagickCore/identify.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/identify.h rename to ImageMagick-7.1.1-44/MagickCore/identify.h diff --git a/ImageMagick-7.1.1-43/MagickCore/image-private.h b/ImageMagick-7.1.1-44/MagickCore/image-private.h similarity index 98% rename from ImageMagick-7.1.1-43/MagickCore/image-private.h rename to ImageMagick-7.1.1-44/MagickCore/image-private.h index aa48b3cb5..4ce71c32c 100644 --- a/ImageMagick-7.1.1-43/MagickCore/image-private.h +++ b/ImageMagick-7.1.1-44/MagickCore/image-private.h @@ -60,7 +60,7 @@ extern "C" { #define SaveImagesTag "Save/Images" #define SaveImageTag "Save/Image" #define TransparentColor "#00000000" /* transparent black */ -#define TransparentColorRGBA 0,0,0,TransparentAlpha +#define TransparentColorRGBA (Quantum) 0,(Quantum) 0,(Quantum) 0,TransparentAlpha #define UndefinedCompressionQuality 0UL #define UndefinedTicksPerSecond 100L diff --git a/ImageMagick-7.1.1-43/MagickCore/image-view.c b/ImageMagick-7.1.1-44/MagickCore/image-view.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/image-view.c rename to ImageMagick-7.1.1-44/MagickCore/image-view.c diff --git a/ImageMagick-7.1.1-43/MagickCore/image-view.h b/ImageMagick-7.1.1-44/MagickCore/image-view.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/image-view.h rename to ImageMagick-7.1.1-44/MagickCore/image-view.h diff --git a/ImageMagick-7.1.1-43/MagickCore/image.c b/ImageMagick-7.1.1-44/MagickCore/image.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/image.c rename to ImageMagick-7.1.1-44/MagickCore/image.c index 99cf46d90..39d302875 100644 --- a/ImageMagick-7.1.1-43/MagickCore/image.c +++ b/ImageMagick-7.1.1-44/MagickCore/image.c @@ -1694,7 +1694,7 @@ MagickExport size_t InterpretImageFilename(const ImageInfo *image_info, c=(*q); *q='\0'; (void) FormatLocaleString(filename+(p-format-offset),(size_t) - (MagickPathExtent-(p-format-offset)),"%s",p); + (MagickPathExtent-(p-format-offset)),p,value); offset+=(4-field_width); *q=c; (void) ConcatenateMagickString(filename,q,MagickPathExtent); diff --git a/ImageMagick-7.1.1-43/MagickCore/image.h b/ImageMagick-7.1.1-44/MagickCore/image.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/image.h rename to ImageMagick-7.1.1-44/MagickCore/image.h diff --git a/ImageMagick-7.1.1-43/MagickCore/layer.c b/ImageMagick-7.1.1-44/MagickCore/layer.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/layer.c rename to ImageMagick-7.1.1-44/MagickCore/layer.c diff --git a/ImageMagick-7.1.1-43/MagickCore/layer.h b/ImageMagick-7.1.1-44/MagickCore/layer.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/layer.h rename to ImageMagick-7.1.1-44/MagickCore/layer.h diff --git a/ImageMagick-7.1.1-43/MagickCore/linked-list-private.h b/ImageMagick-7.1.1-44/MagickCore/linked-list-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/linked-list-private.h rename to ImageMagick-7.1.1-44/MagickCore/linked-list-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/linked-list.c b/ImageMagick-7.1.1-44/MagickCore/linked-list.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/linked-list.c rename to ImageMagick-7.1.1-44/MagickCore/linked-list.c diff --git a/ImageMagick-7.1.1-43/MagickCore/linked-list.h b/ImageMagick-7.1.1-44/MagickCore/linked-list.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/linked-list.h rename to ImageMagick-7.1.1-44/MagickCore/linked-list.h diff --git a/ImageMagick-7.1.1-43/MagickCore/list.c b/ImageMagick-7.1.1-44/MagickCore/list.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/list.c rename to ImageMagick-7.1.1-44/MagickCore/list.c diff --git a/ImageMagick-7.1.1-43/MagickCore/list.h b/ImageMagick-7.1.1-44/MagickCore/list.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/list.h rename to ImageMagick-7.1.1-44/MagickCore/list.h diff --git a/ImageMagick-7.1.1-43/MagickCore/locale-private.h b/ImageMagick-7.1.1-44/MagickCore/locale-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/locale-private.h rename to ImageMagick-7.1.1-44/MagickCore/locale-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/locale.c b/ImageMagick-7.1.1-44/MagickCore/locale.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/locale.c rename to ImageMagick-7.1.1-44/MagickCore/locale.c diff --git a/ImageMagick-7.1.1-43/MagickCore/locale_.h b/ImageMagick-7.1.1-44/MagickCore/locale_.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/locale_.h rename to ImageMagick-7.1.1-44/MagickCore/locale_.h diff --git a/ImageMagick-7.1.1-43/MagickCore/log-private.h b/ImageMagick-7.1.1-44/MagickCore/log-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/log-private.h rename to ImageMagick-7.1.1-44/MagickCore/log-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/log.c b/ImageMagick-7.1.1-44/MagickCore/log.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/log.c rename to ImageMagick-7.1.1-44/MagickCore/log.c diff --git a/ImageMagick-7.1.1-43/MagickCore/log.h b/ImageMagick-7.1.1-44/MagickCore/log.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/log.h rename to ImageMagick-7.1.1-44/MagickCore/log.h diff --git a/ImageMagick-7.1.1-43/MagickCore/magic-private.h b/ImageMagick-7.1.1-44/MagickCore/magic-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/magic-private.h rename to ImageMagick-7.1.1-44/MagickCore/magic-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/magic.c b/ImageMagick-7.1.1-44/MagickCore/magic.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/magic.c rename to ImageMagick-7.1.1-44/MagickCore/magic.c index aa276f0d2..a49724632 100644 --- a/ImageMagick-7.1.1-43/MagickCore/magic.c +++ b/ImageMagick-7.1.1-44/MagickCore/magic.c @@ -800,7 +800,7 @@ MagickPrivate MagickBooleanType MagicComponentGenesis(void) static void *DestroyMagicElement(void *magic_info) { - RelinquishMagickMemory((MagicInfo *) magic_info); + (void) RelinquishMagickMemory((MagicInfo *) magic_info); return((void *) NULL); } diff --git a/ImageMagick-7.1.1-43/MagickCore/magic.h b/ImageMagick-7.1.1-44/MagickCore/magic.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/magic.h rename to ImageMagick-7.1.1-44/MagickCore/magic.h diff --git a/ImageMagick-7.1.1-43/MagickCore/magick-config.h b/ImageMagick-7.1.1-44/MagickCore/magick-config.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/magick-config.h rename to ImageMagick-7.1.1-44/MagickCore/magick-config.h diff --git a/ImageMagick-7.1.1-43/MagickCore/magick-private.h b/ImageMagick-7.1.1-44/MagickCore/magick-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/magick-private.h rename to ImageMagick-7.1.1-44/MagickCore/magick-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/magick-type.h b/ImageMagick-7.1.1-44/MagickCore/magick-type.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/magick-type.h rename to ImageMagick-7.1.1-44/MagickCore/magick-type.h diff --git a/ImageMagick-7.1.1-43/MagickCore/magick.c b/ImageMagick-7.1.1-44/MagickCore/magick.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/magick.c rename to ImageMagick-7.1.1-44/MagickCore/magick.c diff --git a/ImageMagick-7.1.1-43/MagickCore/magick.h b/ImageMagick-7.1.1-44/MagickCore/magick.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/magick.h rename to ImageMagick-7.1.1-44/MagickCore/magick.h diff --git a/ImageMagick-7.1.1-43/MagickCore/matrix-private.h b/ImageMagick-7.1.1-44/MagickCore/matrix-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/matrix-private.h rename to ImageMagick-7.1.1-44/MagickCore/matrix-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/matrix.c b/ImageMagick-7.1.1-44/MagickCore/matrix.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/matrix.c rename to ImageMagick-7.1.1-44/MagickCore/matrix.c diff --git a/ImageMagick-7.1.1-43/MagickCore/matrix.h b/ImageMagick-7.1.1-44/MagickCore/matrix.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/matrix.h rename to ImageMagick-7.1.1-44/MagickCore/matrix.h diff --git a/ImageMagick-7.1.1-43/MagickCore/memory-private.h b/ImageMagick-7.1.1-44/MagickCore/memory-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/memory-private.h rename to ImageMagick-7.1.1-44/MagickCore/memory-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/memory.c b/ImageMagick-7.1.1-44/MagickCore/memory.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/memory.c rename to ImageMagick-7.1.1-44/MagickCore/memory.c index 434ea23d8..80035266c 100644 --- a/ImageMagick-7.1.1-43/MagickCore/memory.c +++ b/ImageMagick-7.1.1-44/MagickCore/memory.c @@ -1617,7 +1617,7 @@ MagickExport void SetMagickMemoryMethods( */ MagickPrivate void SetMaxMemoryRequest(const MagickSizeType limit) { - max_memory_request=MagickMin(limit,GetMaxMemoryRequest()); + max_memory_request=(size_t) MagickMin(limit,GetMaxMemoryRequest()); } /* @@ -1644,7 +1644,7 @@ MagickPrivate void SetMaxMemoryRequest(const MagickSizeType limit) */ MagickPrivate void SetMaxProfileSize(const MagickSizeType limit) { - max_profile_size=MagickMin(limit,GetMaxProfileSize()); + max_profile_size=(size_t) MagickMin(limit,GetMaxProfileSize()); } /* diff --git a/ImageMagick-7.1.1-43/MagickCore/memory_.h b/ImageMagick-7.1.1-44/MagickCore/memory_.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/memory_.h rename to ImageMagick-7.1.1-44/MagickCore/memory_.h diff --git a/ImageMagick-7.1.1-43/MagickCore/method-attribute.h b/ImageMagick-7.1.1-44/MagickCore/method-attribute.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/method-attribute.h rename to ImageMagick-7.1.1-44/MagickCore/method-attribute.h diff --git a/ImageMagick-7.1.1-43/MagickCore/methods.h b/ImageMagick-7.1.1-44/MagickCore/methods.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/methods.h rename to ImageMagick-7.1.1-44/MagickCore/methods.h diff --git a/ImageMagick-7.1.1-43/MagickCore/mime-private.h b/ImageMagick-7.1.1-44/MagickCore/mime-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/mime-private.h rename to ImageMagick-7.1.1-44/MagickCore/mime-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/mime.c b/ImageMagick-7.1.1-44/MagickCore/mime.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/mime.c rename to ImageMagick-7.1.1-44/MagickCore/mime.c diff --git a/ImageMagick-7.1.1-43/MagickCore/mime.h b/ImageMagick-7.1.1-44/MagickCore/mime.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/mime.h rename to ImageMagick-7.1.1-44/MagickCore/mime.h diff --git a/ImageMagick-7.1.1-43/MagickCore/module-private.h b/ImageMagick-7.1.1-44/MagickCore/module-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/module-private.h rename to ImageMagick-7.1.1-44/MagickCore/module-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/module.c b/ImageMagick-7.1.1-44/MagickCore/module.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/module.c rename to ImageMagick-7.1.1-44/MagickCore/module.c diff --git a/ImageMagick-7.1.1-43/MagickCore/module.h b/ImageMagick-7.1.1-44/MagickCore/module.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/module.h rename to ImageMagick-7.1.1-44/MagickCore/module.h diff --git a/ImageMagick-7.1.1-43/MagickCore/monitor-private.h b/ImageMagick-7.1.1-44/MagickCore/monitor-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/monitor-private.h rename to ImageMagick-7.1.1-44/MagickCore/monitor-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/monitor.c b/ImageMagick-7.1.1-44/MagickCore/monitor.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/monitor.c rename to ImageMagick-7.1.1-44/MagickCore/monitor.c index fb6731675..4fe4161cc 100644 --- a/ImageMagick-7.1.1-43/MagickCore/monitor.c +++ b/ImageMagick-7.1.1-44/MagickCore/monitor.c @@ -156,7 +156,7 @@ MagickExport MagickBooleanType SetImageProgress(const Image *image, LockSemaphoreInfo(monitor_semaphore); status=image->progress_monitor(message,offset,extent,image->client_data); (void) FormatLocaleString(message,MagickPathExtent,"%g%%:%s:%s", - (double) (100.0*offset*PerceptibleReciprocal(extent-1.0)), + (double) (100.0*offset*PerceptibleReciprocal((double) extent-1.0)), tag == (const char *) NULL ? "null" : tag,image->filename); (void) SetImageArtifact((Image *) image,"monitor:progress",message); UnlockSemaphoreInfo(monitor_semaphore); diff --git a/ImageMagick-7.1.1-43/MagickCore/monitor.h b/ImageMagick-7.1.1-44/MagickCore/monitor.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/monitor.h rename to ImageMagick-7.1.1-44/MagickCore/monitor.h diff --git a/ImageMagick-7.1.1-43/MagickCore/montage.c b/ImageMagick-7.1.1-44/MagickCore/montage.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/montage.c rename to ImageMagick-7.1.1-44/MagickCore/montage.c diff --git a/ImageMagick-7.1.1-43/MagickCore/montage.h b/ImageMagick-7.1.1-44/MagickCore/montage.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/montage.h rename to ImageMagick-7.1.1-44/MagickCore/montage.h diff --git a/ImageMagick-7.1.1-43/MagickCore/morphology-private.h b/ImageMagick-7.1.1-44/MagickCore/morphology-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/morphology-private.h rename to ImageMagick-7.1.1-44/MagickCore/morphology-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/morphology.c b/ImageMagick-7.1.1-44/MagickCore/morphology.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/morphology.c rename to ImageMagick-7.1.1-44/MagickCore/morphology.c index ce28c8cfc..232dc1b80 100644 --- a/ImageMagick-7.1.1-43/MagickCore/morphology.c +++ b/ImageMagick-7.1.1-44/MagickCore/morphology.c @@ -968,7 +968,7 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, switch(type) { case UndefinedKernel: /* These should not call this function */ case UserDefinedKernel: - ThrowMagickException(exception,GetMagickModule(),OptionWarning, + (void) ThrowMagickException(exception,GetMagickModule(),OptionWarning, "InvalidOption","`%s'","Should not call this function"); return((KernelInfo *) NULL); case LaplacianKernel: /* Named Discrete Convolution Kernels */ @@ -2639,7 +2639,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image, } default: { - ThrowMagickException(exception,GetMagickModule(),OptionWarning, + (void) ThrowMagickException(exception,GetMagickModule(),OptionWarning, "InvalidOption","`%s'","not a primitive morphology method"); break; } diff --git a/ImageMagick-7.1.1-43/MagickCore/morphology.h b/ImageMagick-7.1.1-44/MagickCore/morphology.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/morphology.h rename to ImageMagick-7.1.1-44/MagickCore/morphology.h diff --git a/ImageMagick-7.1.1-43/MagickCore/mutex.h b/ImageMagick-7.1.1-44/MagickCore/mutex.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/mutex.h rename to ImageMagick-7.1.1-44/MagickCore/mutex.h diff --git a/ImageMagick-7.1.1-43/MagickCore/nt-base-private.h b/ImageMagick-7.1.1-44/MagickCore/nt-base-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/nt-base-private.h rename to ImageMagick-7.1.1-44/MagickCore/nt-base-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/nt-base.c b/ImageMagick-7.1.1-44/MagickCore/nt-base.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/nt-base.c rename to ImageMagick-7.1.1-44/MagickCore/nt-base.c diff --git a/ImageMagick-7.1.1-43/MagickCore/nt-base.h b/ImageMagick-7.1.1-44/MagickCore/nt-base.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/nt-base.h rename to ImageMagick-7.1.1-44/MagickCore/nt-base.h diff --git a/ImageMagick-7.1.1-43/MagickCore/nt-feature.c b/ImageMagick-7.1.1-44/MagickCore/nt-feature.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/nt-feature.c rename to ImageMagick-7.1.1-44/MagickCore/nt-feature.c diff --git a/ImageMagick-7.1.1-43/MagickCore/nt-feature.h b/ImageMagick-7.1.1-44/MagickCore/nt-feature.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/nt-feature.h rename to ImageMagick-7.1.1-44/MagickCore/nt-feature.h diff --git a/ImageMagick-7.1.1-43/MagickCore/opencl-private.h b/ImageMagick-7.1.1-44/MagickCore/opencl-private.h similarity index 95% rename from ImageMagick-7.1.1-43/MagickCore/opencl-private.h rename to ImageMagick-7.1.1-44/MagickCore/opencl-private.h index ac8574fdf..c19b67bdb 100644 --- a/ImageMagick-7.1.1-43/MagickCore/opencl-private.h +++ b/ImageMagick-7.1.1-44/MagickCore/opencl-private.h @@ -383,40 +383,35 @@ typedef struct _MagickCLEnv #if defined(MAGICKCORE_HDRI_SUPPORT) #define CLOptions "-cl-single-precision-constant -cl-mad-enable -DMAGICKCORE_HDRI_SUPPORT=1 "\ "-DCLQuantum=float -DCLSignedQuantum=float -DCLPixelType=float4 -DQuantumRange=%ff " \ - "-DQuantumScale=%f -DCharQuantumScale=%f -DMagickEpsilon=%f -DMagickPI=%f "\ - "-DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" + "-DCharQuantumScale=%f -DMagickEpsilon=%f -DMagickPI=%f -DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" #define CLQuantum cl_float #define CLPixelPacket cl_float4 #define CLCharQuantumScale 1.0f #elif (MAGICKCORE_QUANTUM_DEPTH == 8) #define CLOptions "-cl-single-precision-constant -cl-mad-enable " \ "-DCLQuantum=uchar -DCLSignedQuantum=char -DCLPixelType=uchar4 -DQuantumRange=%ff " \ - "-DQuantumScale=%ff -DCharQuantumScale=%ff -DMagickEpsilon=%ff -DMagickPI=%ff "\ - "-DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" + "-DCharQuantumScale=%ff -DMagickEpsilon=%ff -DMagickPI=%ff -DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" #define CLQuantum cl_uchar #define CLPixelPacket cl_uchar4 #define CLCharQuantumScale 1.0f #elif (MAGICKCORE_QUANTUM_DEPTH == 16) #define CLOptions "-cl-single-precision-constant -cl-mad-enable " \ "-DCLQuantum=ushort -DCLSignedQuantum=short -DCLPixelType=ushort4 -DQuantumRange=%ff "\ - "-DQuantumScale=%f -DCharQuantumScale=%f -DMagickEpsilon=%f -DMagickPI=%f "\ - "-DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" + "-DCharQuantumScale=%f -DMagickEpsilon=%f -DMagickPI=%f -DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" #define CLQuantum cl_ushort #define CLPixelPacket cl_ushort4 #define CLCharQuantumScale 257.0f #elif (MAGICKCORE_QUANTUM_DEPTH == 32) #define CLOptions "-cl-single-precision-constant -cl-mad-enable " \ "-DCLQuantum=uint -DCLSignedQuantum=int -DCLPixelType=uint4 -DQuantumRange=%ff "\ - "-DQuantumScale=%f -DCharQuantumScale=%f -DMagickEpsilon=%f -DMagickPI=%f "\ - "-DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" + "-DCharQuantumScale=%f -DMagickEpsilon=%f -DMagickPI=%f -DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" #define CLQuantum cl_uint #define CLPixelPacket cl_uint4 #define CLCharQuantumScale 16843009.0f #elif (MAGICKCORE_QUANTUM_DEPTH == 64) #define CLOptions "-cl-single-precision-constant -cl-mad-enable " \ "-DCLQuantum=ulong -DCLSignedQuantum=long -DCLPixelType=ulong4 -DQuantumRange=%ff "\ - "-DQuantumScale=%f -DCharQuantumScale=%f -DMagickEpsilon=%f -DMagickPI=%f "\ - "-DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" + "-DCharQuantumScale=%f -DMagickEpsilon=%f -DMagickPI=%f -DMaxMap=%u -DMAGICKCORE_QUANTUM_DEPTH=%u" #define CLQuantum cl_ulong #define CLPixelPacket cl_ulong4 #define CLCharQuantumScale 72340172838076673.0f diff --git a/ImageMagick-7.1.1-43/MagickCore/opencl.c b/ImageMagick-7.1.1-44/MagickCore/opencl.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/opencl.c rename to ImageMagick-7.1.1-44/MagickCore/opencl.c index e9742f3e9..82a728ee3 100644 --- a/ImageMagick-7.1.1-43/MagickCore/opencl.c +++ b/ImageMagick-7.1.1-44/MagickCore/opencl.c @@ -2168,9 +2168,8 @@ static MagickBooleanType HasOpenCLDevices(MagickCLEnv clEnv, /* Get additional options */ (void) FormatLocaleString(options,MagickPathExtent,CLOptions, - (float)QuantumRange,(float)QuantumScale,(float)CLCharQuantumScale, - (float)MagickEpsilon,(float)MagickPI,(unsigned int)MaxMap, - (unsigned int)MAGICKCORE_QUANTUM_DEPTH); + (float)QuantumRange,(float)CLCharQuantumScale,(float)MagickEpsilon, + (float)MagickPI,(unsigned int)MaxMap,(unsigned int)MAGICKCORE_QUANTUM_DEPTH); signature=StringSignature(options); accelerateKernelsBuffer=(char*) AcquireQuantumMemory(1, diff --git a/ImageMagick-7.1.1-43/MagickCore/opencl.h b/ImageMagick-7.1.1-44/MagickCore/opencl.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/opencl.h rename to ImageMagick-7.1.1-44/MagickCore/opencl.h diff --git a/ImageMagick-7.1.1-43/MagickCore/option-private.h b/ImageMagick-7.1.1-44/MagickCore/option-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/option-private.h rename to ImageMagick-7.1.1-44/MagickCore/option-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/option.c b/ImageMagick-7.1.1-44/MagickCore/option.c similarity index 97% rename from ImageMagick-7.1.1-43/MagickCore/option.c rename to ImageMagick-7.1.1-44/MagickCore/option.c index 6774334d3..eee6f943c 100644 --- a/ImageMagick-7.1.1-43/MagickCore/option.c +++ b/ImageMagick-7.1.1-44/MagickCore/option.c @@ -84,7 +84,7 @@ /* Define declarations. */ -#define MetaPixelChannelBit(bit) ((ssize_t) 1 << (MetaPixelChannels+bit)) +#define MetaPixelChannelBit(bit) ((ssize_t) 1 << ((ssize_t) MetaPixelChannels+bit)) /* ImageMagick options. @@ -563,6 +563,7 @@ static const OptionInfo { { "Undefined", UndefinedColorspace, UndefinedOptionFlag, MagickTrue }, { "Adobe98", Adobe98Colorspace, UndefinedOptionFlag, MagickFalse }, + { "CAT02LMS", CAT02LMSColorspace, UndefinedOptionFlag, MagickFalse }, { "CIELab", LabColorspace, UndefinedOptionFlag, MagickFalse }, { "CMY", CMYColorspace, UndefinedOptionFlag, MagickFalse }, { "CMYK", CMYKColorspace, UndefinedOptionFlag, MagickFalse }, @@ -1844,6 +1845,7 @@ static const OptionInfo { { "Undefined", UndefinedErrorMetric, UndefinedOptionFlag, MagickTrue }, { "AE", AbsoluteErrorMetric, UndefinedOptionFlag, MagickFalse }, + { "DPC", DotProductCorrelationErrorMetric, UndefinedOptionFlag, MagickFalse }, { "DSSIM", StructuralDissimilarityErrorMetric, UndefinedOptionFlag, MagickFalse }, { "Fuzz", FuzzErrorMetric, UndefinedOptionFlag, MagickFalse }, { "MAE", MeanAbsoluteErrorMetric, UndefinedOptionFlag, MagickFalse }, @@ -1851,6 +1853,7 @@ static const OptionInfo { "MSE", MeanSquaredErrorMetric, UndefinedOptionFlag, MagickFalse }, { "NCC", NormalizedCrossCorrelationErrorMetric, UndefinedOptionFlag, MagickFalse }, { "PAE", PeakAbsoluteErrorMetric, UndefinedOptionFlag, MagickFalse }, + { "PHASE", PhaseCorrelationErrorMetric, UndefinedOptionFlag, MagickFalse }, { "PHASH", PerceptualHashErrorMetric, UndefinedOptionFlag, MagickFalse }, { "PSNR", PeakSignalToNoiseRatioErrorMetric, UndefinedOptionFlag, MagickFalse }, { "RMSE", RootMeanSquaredErrorMetric, UndefinedOptionFlag, MagickFalse }, @@ -1957,61 +1960,61 @@ static const OptionInfo { "M", MagentaPixelChannel, UndefinedOptionFlag, MagickFalse }, { "Magenta", MagentaPixelChannel, UndefinedOptionFlag, MagickFalse }, { "Meta", MetaPixelChannels, UndefinedOptionFlag, MagickFalse }, - { "Meta0", MetaPixelChannels+0, UndefinedOptionFlag, MagickFalse }, - { "Meta1", MetaPixelChannels+1, UndefinedOptionFlag, MagickFalse }, - { "Meta2", MetaPixelChannels+2, UndefinedOptionFlag, MagickFalse }, - { "Meta3", MetaPixelChannels+3, UndefinedOptionFlag, MagickFalse }, - { "Meta4", MetaPixelChannels+4, UndefinedOptionFlag, MagickFalse }, - { "Meta5", MetaPixelChannels+5, UndefinedOptionFlag, MagickFalse }, - { "Meta6", MetaPixelChannels+6, UndefinedOptionFlag, MagickFalse }, - { "Meta7", MetaPixelChannels+7, UndefinedOptionFlag, MagickFalse }, - { "Meta8", MetaPixelChannels+8, UndefinedOptionFlag, MagickFalse }, - { "Meta9", MetaPixelChannels+9, UndefinedOptionFlag, MagickFalse }, - { "Meta10", MetaPixelChannels+10, UndefinedOptionFlag, MagickFalse }, - { "Meta11", MetaPixelChannels+11, UndefinedOptionFlag, MagickFalse }, - { "Meta12", MetaPixelChannels+12, UndefinedOptionFlag, MagickFalse }, - { "Meta13", MetaPixelChannels+13, UndefinedOptionFlag, MagickFalse }, - { "Meta14", MetaPixelChannels+14, UndefinedOptionFlag, MagickFalse }, - { "Meta15", MetaPixelChannels+15, UndefinedOptionFlag, MagickFalse }, - { "Meta16", MetaPixelChannels+16, UndefinedOptionFlag, MagickFalse }, - { "Meta17", MetaPixelChannels+17, UndefinedOptionFlag, MagickFalse }, - { "Meta18", MetaPixelChannels+18, UndefinedOptionFlag, MagickFalse }, - { "Meta19", MetaPixelChannels+19, UndefinedOptionFlag, MagickFalse }, - { "Meta20", MetaPixelChannels+20, UndefinedOptionFlag, MagickFalse }, - { "Meta21", MetaPixelChannels+21, UndefinedOptionFlag, MagickFalse }, - { "Meta22", MetaPixelChannels+22, UndefinedOptionFlag, MagickFalse }, - { "Meta23", MetaPixelChannels+23, UndefinedOptionFlag, MagickFalse }, - { "Meta24", MetaPixelChannels+24, UndefinedOptionFlag, MagickFalse }, - { "Meta25", MetaPixelChannels+25, UndefinedOptionFlag, MagickFalse }, - { "Meta26", MetaPixelChannels+26, UndefinedOptionFlag, MagickFalse }, - { "Meta27", MetaPixelChannels+27, UndefinedOptionFlag, MagickFalse }, - { "Meta28", MetaPixelChannels+28, UndefinedOptionFlag, MagickFalse }, - { "Meta29", MetaPixelChannels+29, UndefinedOptionFlag, MagickFalse }, - { "Meta30", MetaPixelChannels+30, UndefinedOptionFlag, MagickFalse }, - { "Meta31", MetaPixelChannels+31, UndefinedOptionFlag, MagickFalse }, - { "Meta32", MetaPixelChannels+32, UndefinedOptionFlag, MagickFalse }, - { "Meta33", MetaPixelChannels+33, UndefinedOptionFlag, MagickFalse }, - { "Meta34", MetaPixelChannels+34, UndefinedOptionFlag, MagickFalse }, - { "Meta35", MetaPixelChannels+35, UndefinedOptionFlag, MagickFalse }, - { "Meta36", MetaPixelChannels+36, UndefinedOptionFlag, MagickFalse }, - { "Meta37", MetaPixelChannels+37, UndefinedOptionFlag, MagickFalse }, - { "Meta38", MetaPixelChannels+38, UndefinedOptionFlag, MagickFalse }, - { "Meta39", MetaPixelChannels+39, UndefinedOptionFlag, MagickFalse }, - { "Meta40", MetaPixelChannels+40, UndefinedOptionFlag, MagickFalse }, - { "Meta41", MetaPixelChannels+41, UndefinedOptionFlag, MagickFalse }, - { "Meta42", MetaPixelChannels+42, UndefinedOptionFlag, MagickFalse }, - { "Meta43", MetaPixelChannels+43, UndefinedOptionFlag, MagickFalse }, - { "Meta44", MetaPixelChannels+44, UndefinedOptionFlag, MagickFalse }, - { "Meta45", MetaPixelChannels+45, UndefinedOptionFlag, MagickFalse }, - { "Meta46", MetaPixelChannels+46, UndefinedOptionFlag, MagickFalse }, - { "Meta47", MetaPixelChannels+47, UndefinedOptionFlag, MagickFalse }, - { "Meta48", MetaPixelChannels+48, UndefinedOptionFlag, MagickFalse }, - { "Meta49", MetaPixelChannels+49, UndefinedOptionFlag, MagickFalse }, - { "Meta50", MetaPixelChannels+50, UndefinedOptionFlag, MagickFalse }, - { "Meta51", MetaPixelChannels+51, UndefinedOptionFlag, MagickFalse }, - { "Meta52", MetaPixelChannels+52, UndefinedOptionFlag, MagickFalse }, - { "Meta53", MetaPixelChannels+53, UndefinedOptionFlag, MagickFalse }, - { "Meta54", MetaPixelChannels+54, UndefinedOptionFlag, MagickFalse }, + { "Meta0", (ssize_t) MetaPixelChannels+0, UndefinedOptionFlag, MagickFalse }, + { "Meta1", (ssize_t) MetaPixelChannels+1, UndefinedOptionFlag, MagickFalse }, + { "Meta2", (ssize_t) MetaPixelChannels+2, UndefinedOptionFlag, MagickFalse }, + { "Meta3", (ssize_t) MetaPixelChannels+3, UndefinedOptionFlag, MagickFalse }, + { "Meta4", (ssize_t) MetaPixelChannels+4, UndefinedOptionFlag, MagickFalse }, + { "Meta5", (ssize_t) MetaPixelChannels+5, UndefinedOptionFlag, MagickFalse }, + { "Meta6", (ssize_t) MetaPixelChannels+6, UndefinedOptionFlag, MagickFalse }, + { "Meta7", (ssize_t) MetaPixelChannels+7, UndefinedOptionFlag, MagickFalse }, + { "Meta8", (ssize_t) MetaPixelChannels+8, UndefinedOptionFlag, MagickFalse }, + { "Meta9", (ssize_t) MetaPixelChannels+9, UndefinedOptionFlag, MagickFalse }, + { "Meta10", (ssize_t) MetaPixelChannels+10, UndefinedOptionFlag, MagickFalse }, + { "Meta11", (ssize_t) MetaPixelChannels+11, UndefinedOptionFlag, MagickFalse }, + { "Meta12", (ssize_t) MetaPixelChannels+12, UndefinedOptionFlag, MagickFalse }, + { "Meta13", (ssize_t) MetaPixelChannels+13, UndefinedOptionFlag, MagickFalse }, + { "Meta14", (ssize_t) MetaPixelChannels+14, UndefinedOptionFlag, MagickFalse }, + { "Meta15", (ssize_t) MetaPixelChannels+15, UndefinedOptionFlag, MagickFalse }, + { "Meta16", (ssize_t) MetaPixelChannels+16, UndefinedOptionFlag, MagickFalse }, + { "Meta17", (ssize_t) MetaPixelChannels+17, UndefinedOptionFlag, MagickFalse }, + { "Meta18", (ssize_t) MetaPixelChannels+18, UndefinedOptionFlag, MagickFalse }, + { "Meta19", (ssize_t) MetaPixelChannels+19, UndefinedOptionFlag, MagickFalse }, + { "Meta20", (ssize_t) MetaPixelChannels+20, UndefinedOptionFlag, MagickFalse }, + { "Meta21", (ssize_t) MetaPixelChannels+21, UndefinedOptionFlag, MagickFalse }, + { "Meta22", (ssize_t) MetaPixelChannels+22, UndefinedOptionFlag, MagickFalse }, + { "Meta23", (ssize_t) MetaPixelChannels+23, UndefinedOptionFlag, MagickFalse }, + { "Meta24", (ssize_t) MetaPixelChannels+24, UndefinedOptionFlag, MagickFalse }, + { "Meta25", (ssize_t) MetaPixelChannels+25, UndefinedOptionFlag, MagickFalse }, + { "Meta26", (ssize_t) MetaPixelChannels+26, UndefinedOptionFlag, MagickFalse }, + { "Meta27", (ssize_t) MetaPixelChannels+27, UndefinedOptionFlag, MagickFalse }, + { "Meta28", (ssize_t) MetaPixelChannels+28, UndefinedOptionFlag, MagickFalse }, + { "Meta29", (ssize_t) MetaPixelChannels+29, UndefinedOptionFlag, MagickFalse }, + { "Meta30", (ssize_t) MetaPixelChannels+30, UndefinedOptionFlag, MagickFalse }, + { "Meta31", (ssize_t) MetaPixelChannels+31, UndefinedOptionFlag, MagickFalse }, + { "Meta32", (ssize_t) MetaPixelChannels+32, UndefinedOptionFlag, MagickFalse }, + { "Meta33", (ssize_t) MetaPixelChannels+33, UndefinedOptionFlag, MagickFalse }, + { "Meta34", (ssize_t) MetaPixelChannels+34, UndefinedOptionFlag, MagickFalse }, + { "Meta35", (ssize_t) MetaPixelChannels+35, UndefinedOptionFlag, MagickFalse }, + { "Meta36", (ssize_t) MetaPixelChannels+36, UndefinedOptionFlag, MagickFalse }, + { "Meta37", (ssize_t) MetaPixelChannels+37, UndefinedOptionFlag, MagickFalse }, + { "Meta38", (ssize_t) MetaPixelChannels+38, UndefinedOptionFlag, MagickFalse }, + { "Meta39", (ssize_t) MetaPixelChannels+39, UndefinedOptionFlag, MagickFalse }, + { "Meta40", (ssize_t) MetaPixelChannels+40, UndefinedOptionFlag, MagickFalse }, + { "Meta41", (ssize_t) MetaPixelChannels+41, UndefinedOptionFlag, MagickFalse }, + { "Meta42", (ssize_t) MetaPixelChannels+42, UndefinedOptionFlag, MagickFalse }, + { "Meta43", (ssize_t) MetaPixelChannels+43, UndefinedOptionFlag, MagickFalse }, + { "Meta44", (ssize_t) MetaPixelChannels+44, UndefinedOptionFlag, MagickFalse }, + { "Meta45", (ssize_t) MetaPixelChannels+45, UndefinedOptionFlag, MagickFalse }, + { "Meta46", (ssize_t) MetaPixelChannels+46, UndefinedOptionFlag, MagickFalse }, + { "Meta47", (ssize_t) MetaPixelChannels+47, UndefinedOptionFlag, MagickFalse }, + { "Meta48", (ssize_t) MetaPixelChannels+48, UndefinedOptionFlag, MagickFalse }, + { "Meta49", (ssize_t) MetaPixelChannels+49, UndefinedOptionFlag, MagickFalse }, + { "Meta50", (ssize_t) MetaPixelChannels+50, UndefinedOptionFlag, MagickFalse }, + { "Meta51", (ssize_t) MetaPixelChannels+51, UndefinedOptionFlag, MagickFalse }, + { "Meta52", (ssize_t) MetaPixelChannels+52, UndefinedOptionFlag, MagickFalse }, + { "Meta53", (ssize_t) MetaPixelChannels+53, UndefinedOptionFlag, MagickFalse }, + { "Meta54", (ssize_t) MetaPixelChannels+54, UndefinedOptionFlag, MagickFalse }, { "O", AlphaPixelChannel, UndefinedOptionFlag, MagickFalse }, { "R", RedPixelChannel, UndefinedOptionFlag, MagickFalse }, { "ReadMask", ReadMaskPixelChannel, UndefinedOptionFlag, MagickFalse }, diff --git a/ImageMagick-7.1.1-43/MagickCore/option.h b/ImageMagick-7.1.1-44/MagickCore/option.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/option.h rename to ImageMagick-7.1.1-44/MagickCore/option.h diff --git a/ImageMagick-7.1.1-43/MagickCore/paint.c b/ImageMagick-7.1.1-44/MagickCore/paint.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/paint.c rename to ImageMagick-7.1.1-44/MagickCore/paint.c diff --git a/ImageMagick-7.1.1-43/MagickCore/paint.h b/ImageMagick-7.1.1-44/MagickCore/paint.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/paint.h rename to ImageMagick-7.1.1-44/MagickCore/paint.h diff --git a/ImageMagick-7.1.1-43/MagickCore/pixel-accessor.h b/ImageMagick-7.1.1-44/MagickCore/pixel-accessor.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/pixel-accessor.h rename to ImageMagick-7.1.1-44/MagickCore/pixel-accessor.h diff --git a/ImageMagick-7.1.1-43/MagickCore/pixel-private.h b/ImageMagick-7.1.1-44/MagickCore/pixel-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/pixel-private.h rename to ImageMagick-7.1.1-44/MagickCore/pixel-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/pixel.c b/ImageMagick-7.1.1-44/MagickCore/pixel.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/pixel.c rename to ImageMagick-7.1.1-44/MagickCore/pixel.c index 930b4f28e..4cb82ee5b 100644 --- a/ImageMagick-7.1.1-43/MagickCore/pixel.c +++ b/ImageMagick-7.1.1-44/MagickCore/pixel.c @@ -6180,7 +6180,7 @@ MagickPrivate MagickBooleanType ResetPixelChannelMap(Image *image, ssize_t i; - if (image->number_meta_channels >= (MaxPixelChannels-MetaPixelChannels)) + if (image->number_meta_channels >= (size_t) (MaxPixelChannels-MetaPixelChannels)) { image->number_channels=(size_t) n; image->number_meta_channels=0; @@ -6425,7 +6425,7 @@ MagickExport MagickBooleanType SetPixelMetaChannels(Image *image, MagickBooleanType status; - if (number_meta_channels >= (MaxPixelChannels-MetaPixelChannels)) + if (number_meta_channels >= (size_t) (MaxPixelChannels-MetaPixelChannels)) ThrowBinaryException(CorruptImageError,"MaximumChannelsExceeded", image->filename); image->number_meta_channels=number_meta_channels; diff --git a/ImageMagick-7.1.1-43/MagickCore/pixel.h b/ImageMagick-7.1.1-44/MagickCore/pixel.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/pixel.h rename to ImageMagick-7.1.1-44/MagickCore/pixel.h diff --git a/ImageMagick-7.1.1-43/MagickCore/policy-private.h b/ImageMagick-7.1.1-44/MagickCore/policy-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/policy-private.h rename to ImageMagick-7.1.1-44/MagickCore/policy-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/policy.c b/ImageMagick-7.1.1-44/MagickCore/policy.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/policy.c rename to ImageMagick-7.1.1-44/MagickCore/policy.c diff --git a/ImageMagick-7.1.1-43/MagickCore/policy.h b/ImageMagick-7.1.1-44/MagickCore/policy.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/policy.h rename to ImageMagick-7.1.1-44/MagickCore/policy.h diff --git a/ImageMagick-7.1.1-43/MagickCore/prepress.c b/ImageMagick-7.1.1-44/MagickCore/prepress.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/prepress.c rename to ImageMagick-7.1.1-44/MagickCore/prepress.c diff --git a/ImageMagick-7.1.1-43/MagickCore/prepress.h b/ImageMagick-7.1.1-44/MagickCore/prepress.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/prepress.h rename to ImageMagick-7.1.1-44/MagickCore/prepress.h diff --git a/ImageMagick-7.1.1-43/MagickCore/profile-private.h b/ImageMagick-7.1.1-44/MagickCore/profile-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/profile-private.h rename to ImageMagick-7.1.1-44/MagickCore/profile-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/profile.c b/ImageMagick-7.1.1-44/MagickCore/profile.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/profile.c rename to ImageMagick-7.1.1-44/MagickCore/profile.c diff --git a/ImageMagick-7.1.1-43/MagickCore/profile.h b/ImageMagick-7.1.1-44/MagickCore/profile.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/profile.h rename to ImageMagick-7.1.1-44/MagickCore/profile.h diff --git a/ImageMagick-7.1.1-43/MagickCore/property.c b/ImageMagick-7.1.1-44/MagickCore/property.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/property.c rename to ImageMagick-7.1.1-44/MagickCore/property.c diff --git a/ImageMagick-7.1.1-43/MagickCore/property.h b/ImageMagick-7.1.1-44/MagickCore/property.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/property.h rename to ImageMagick-7.1.1-44/MagickCore/property.h diff --git a/ImageMagick-7.1.1-43/MagickCore/quantize.c b/ImageMagick-7.1.1-44/MagickCore/quantize.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/quantize.c rename to ImageMagick-7.1.1-44/MagickCore/quantize.c index 578f11ee7..997922b2b 100644 --- a/ImageMagick-7.1.1-43/MagickCore/quantize.c +++ b/ImageMagick-7.1.1-44/MagickCore/quantize.c @@ -2854,7 +2854,7 @@ static inline double MagickRound(double x) static inline Quantum PosterizePixel(const Quantum pixel,const size_t levels) { double posterize_pixel = QuantumRange*MagickRound(QuantumScale*(double) pixel* - (levels-1.0))/MagickMax(levels-1.0,1.0); + ((double) levels-1.0))/MagickMax((double) levels-1.0,1.0); return(ClampToQuantum((MagickRealType) posterize_pixel)); } @@ -2901,7 +2901,7 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels, if ((traits & UpdatePixelTrait) != 0) channels++; } - number_columns=(size_t) pow(levels,channels); + number_columns=(size_t) pow((double) levels,(double) channels); map_image=CloneImage(image,number_columns,1,MagickTrue,exception); if (map_image == (Image *) NULL) { @@ -2918,7 +2918,7 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels, *map_image_view; MagickRealType - scale = QuantumRange/(levels-1.0); + scale = (MagickRealType) QuantumRange/(levels-1.0); Quantum *magick_restrict q; diff --git a/ImageMagick-7.1.1-43/MagickCore/quantize.h b/ImageMagick-7.1.1-44/MagickCore/quantize.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/quantize.h rename to ImageMagick-7.1.1-44/MagickCore/quantize.h diff --git a/ImageMagick-7.1.1-43/MagickCore/quantum-export.c b/ImageMagick-7.1.1-44/MagickCore/quantum-export.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/quantum-export.c rename to ImageMagick-7.1.1-44/MagickCore/quantum-export.c diff --git a/ImageMagick-7.1.1-43/MagickCore/quantum-import.c b/ImageMagick-7.1.1-44/MagickCore/quantum-import.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/quantum-import.c rename to ImageMagick-7.1.1-44/MagickCore/quantum-import.c diff --git a/ImageMagick-7.1.1-43/MagickCore/quantum-private.h b/ImageMagick-7.1.1-44/MagickCore/quantum-private.h similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/quantum-private.h rename to ImageMagick-7.1.1-44/MagickCore/quantum-private.h index ebab55673..174d1fb7e 100644 --- a/ImageMagick-7.1.1-43/MagickCore/quantum-private.h +++ b/ImageMagick-7.1.1-44/MagickCore/quantum-private.h @@ -331,7 +331,7 @@ static inline QuantumAny ScaleQuantumToAny(const Quantum quantum, #else if ((IsNaN(quantum) != 0) || (quantum <= 0.0f)) return((QuantumAny) 0UL); - if ((range*(double) quantum/(double) QuantumRange) >= 18446744073709551615.0) + if (((double) range*quantum/(double) QuantumRange) >= 18446744073709551615.0) return((QuantumAny) MagickULLConstant(18446744073709551615)); return((QuantumAny) (range*(double) quantum/(double) QuantumRange+0.5)); #endif diff --git a/ImageMagick-7.1.1-43/MagickCore/quantum.c b/ImageMagick-7.1.1-44/MagickCore/quantum.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/quantum.c rename to ImageMagick-7.1.1-44/MagickCore/quantum.c diff --git a/ImageMagick-7.1.1-43/MagickCore/quantum.h b/ImageMagick-7.1.1-44/MagickCore/quantum.h similarity index 98% rename from ImageMagick-7.1.1-43/MagickCore/quantum.h rename to ImageMagick-7.1.1-44/MagickCore/quantum.h index 10505d1f7..c5d7c65e9 100644 --- a/ImageMagick-7.1.1-43/MagickCore/quantum.h +++ b/ImageMagick-7.1.1-44/MagickCore/quantum.h @@ -116,9 +116,9 @@ static inline unsigned char ScaleQuantumToChar(const Quantum quantum) return((unsigned char) (((quantum+128UL)-((quantum+128UL) >> 8)) >> 8)); #else if ((IsNaN(quantum) != 0) || (quantum <= 0.0f)) - return(0); + return((unsigned char) 0); if ((quantum/257.0f) >= 255.0f) - return(255); + return((unsigned char) 255); return((unsigned char) (quantum/257.0f+0.5f)); #endif } diff --git a/ImageMagick-7.1.1-43/MagickCore/random-private.h b/ImageMagick-7.1.1-44/MagickCore/random-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/random-private.h rename to ImageMagick-7.1.1-44/MagickCore/random-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/random.c b/ImageMagick-7.1.1-44/MagickCore/random.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/random.c rename to ImageMagick-7.1.1-44/MagickCore/random.c diff --git a/ImageMagick-7.1.1-43/MagickCore/random_.h b/ImageMagick-7.1.1-44/MagickCore/random_.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/random_.h rename to ImageMagick-7.1.1-44/MagickCore/random_.h diff --git a/ImageMagick-7.1.1-43/MagickCore/registry-private.h b/ImageMagick-7.1.1-44/MagickCore/registry-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/registry-private.h rename to ImageMagick-7.1.1-44/MagickCore/registry-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/registry.c b/ImageMagick-7.1.1-44/MagickCore/registry.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/registry.c rename to ImageMagick-7.1.1-44/MagickCore/registry.c diff --git a/ImageMagick-7.1.1-43/MagickCore/registry.h b/ImageMagick-7.1.1-44/MagickCore/registry.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/registry.h rename to ImageMagick-7.1.1-44/MagickCore/registry.h diff --git a/ImageMagick-7.1.1-43/MagickCore/resample-private.h b/ImageMagick-7.1.1-44/MagickCore/resample-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resample-private.h rename to ImageMagick-7.1.1-44/MagickCore/resample-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/resample.c b/ImageMagick-7.1.1-44/MagickCore/resample.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resample.c rename to ImageMagick-7.1.1-44/MagickCore/resample.c diff --git a/ImageMagick-7.1.1-43/MagickCore/resample.h b/ImageMagick-7.1.1-44/MagickCore/resample.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resample.h rename to ImageMagick-7.1.1-44/MagickCore/resample.h diff --git a/ImageMagick-7.1.1-43/MagickCore/resize-private.h b/ImageMagick-7.1.1-44/MagickCore/resize-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resize-private.h rename to ImageMagick-7.1.1-44/MagickCore/resize-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/resize.c b/ImageMagick-7.1.1-44/MagickCore/resize.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resize.c rename to ImageMagick-7.1.1-44/MagickCore/resize.c diff --git a/ImageMagick-7.1.1-43/MagickCore/resize.h b/ImageMagick-7.1.1-44/MagickCore/resize.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resize.h rename to ImageMagick-7.1.1-44/MagickCore/resize.h diff --git a/ImageMagick-7.1.1-43/MagickCore/resource-private.h b/ImageMagick-7.1.1-44/MagickCore/resource-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resource-private.h rename to ImageMagick-7.1.1-44/MagickCore/resource-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/resource.c b/ImageMagick-7.1.1-44/MagickCore/resource.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resource.c rename to ImageMagick-7.1.1-44/MagickCore/resource.c diff --git a/ImageMagick-7.1.1-43/MagickCore/resource_.h b/ImageMagick-7.1.1-44/MagickCore/resource_.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/resource_.h rename to ImageMagick-7.1.1-44/MagickCore/resource_.h diff --git a/ImageMagick-7.1.1-43/MagickCore/segment.c b/ImageMagick-7.1.1-44/MagickCore/segment.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/segment.c rename to ImageMagick-7.1.1-44/MagickCore/segment.c diff --git a/ImageMagick-7.1.1-43/MagickCore/segment.h b/ImageMagick-7.1.1-44/MagickCore/segment.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/segment.h rename to ImageMagick-7.1.1-44/MagickCore/segment.h diff --git a/ImageMagick-7.1.1-43/MagickCore/semaphore-private.h b/ImageMagick-7.1.1-44/MagickCore/semaphore-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/semaphore-private.h rename to ImageMagick-7.1.1-44/MagickCore/semaphore-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/semaphore.c b/ImageMagick-7.1.1-44/MagickCore/semaphore.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/semaphore.c rename to ImageMagick-7.1.1-44/MagickCore/semaphore.c diff --git a/ImageMagick-7.1.1-43/MagickCore/semaphore.h b/ImageMagick-7.1.1-44/MagickCore/semaphore.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/semaphore.h rename to ImageMagick-7.1.1-44/MagickCore/semaphore.h diff --git a/ImageMagick-7.1.1-43/MagickCore/shear.c b/ImageMagick-7.1.1-44/MagickCore/shear.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/shear.c rename to ImageMagick-7.1.1-44/MagickCore/shear.c diff --git a/ImageMagick-7.1.1-43/MagickCore/shear.h b/ImageMagick-7.1.1-44/MagickCore/shear.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/shear.h rename to ImageMagick-7.1.1-44/MagickCore/shear.h diff --git a/ImageMagick-7.1.1-43/MagickCore/signature-private.h b/ImageMagick-7.1.1-44/MagickCore/signature-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/signature-private.h rename to ImageMagick-7.1.1-44/MagickCore/signature-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/signature.c b/ImageMagick-7.1.1-44/MagickCore/signature.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/signature.c rename to ImageMagick-7.1.1-44/MagickCore/signature.c diff --git a/ImageMagick-7.1.1-43/MagickCore/signature.h b/ImageMagick-7.1.1-44/MagickCore/signature.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/signature.h rename to ImageMagick-7.1.1-44/MagickCore/signature.h diff --git a/ImageMagick-7.1.1-43/MagickCore/splay-tree.c b/ImageMagick-7.1.1-44/MagickCore/splay-tree.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/splay-tree.c rename to ImageMagick-7.1.1-44/MagickCore/splay-tree.c diff --git a/ImageMagick-7.1.1-43/MagickCore/splay-tree.h b/ImageMagick-7.1.1-44/MagickCore/splay-tree.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/splay-tree.h rename to ImageMagick-7.1.1-44/MagickCore/splay-tree.h diff --git a/ImageMagick-7.1.1-43/MagickCore/static.c b/ImageMagick-7.1.1-44/MagickCore/static.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/static.c rename to ImageMagick-7.1.1-44/MagickCore/static.c diff --git a/ImageMagick-7.1.1-43/MagickCore/static.h b/ImageMagick-7.1.1-44/MagickCore/static.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/static.h rename to ImageMagick-7.1.1-44/MagickCore/static.h diff --git a/ImageMagick-7.1.1-43/MagickCore/statistic-private.h b/ImageMagick-7.1.1-44/MagickCore/statistic-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/statistic-private.h rename to ImageMagick-7.1.1-44/MagickCore/statistic-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/statistic.c b/ImageMagick-7.1.1-44/MagickCore/statistic.c similarity index 98% rename from ImageMagick-7.1.1-43/MagickCore/statistic.c rename to ImageMagick-7.1.1-44/MagickCore/statistic.c index 0e3b40b69..e199121ea 100644 --- a/ImageMagick-7.1.1-43/MagickCore/statistic.c +++ b/ImageMagick-7.1.1-44/MagickCore/statistic.c @@ -377,12 +377,13 @@ static double ApplyEvaluateOperator(RandomInfo *random_info,const Quantum pixel, } case PowEvaluateOperator: { - if (((double) pixel < 0) && ((value-floor(value)) > MagickEpsilon)) + if (fabs(value) <= MagickEpsilon) + break; + if (((double) pixel < 0.0) && ((value-floor(value)) > MagickEpsilon)) result=(double) -((double) QuantumRange*pow(-(QuantumScale*(double) - pixel),(double) value)); + pixel),value)); else - result=(double) QuantumRange*pow(QuantumScale*(double) pixel, - (double) value); + result=(double) QuantumRange*pow(QuantumScale*(double) pixel,value); break; } case RightShiftEvaluateOperator: @@ -1766,7 +1767,7 @@ MagickExport ChannelPerceptualHash *GetImagePerceptualHash(const Image *image, if (perceptual_hash == (ChannelPerceptualHash *) NULL) return((ChannelPerceptualHash *) NULL); artifact=GetImageArtifact(image,"phash:colorspaces"); - if (artifact != NULL) + if (artifact != (const char *) NULL) colorspaces=AcquireString(artifact); else colorspaces=AcquireString("xyY,HSB"); @@ -1854,7 +1855,6 @@ MagickExport MagickBooleanType GetImageRange(const Image *image,double *minima, *image_view; MagickBooleanType - initialize, status; ssize_t @@ -1865,22 +1865,18 @@ MagickExport MagickBooleanType GetImageRange(const Image *image,double *minima, if (IsEventLogging() != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); status=MagickTrue; - initialize=MagickTrue; - *maxima=0.0; - *minima=0.0; + *maxima=MagickMinimumValue; + *minima=MagickMaximumValue; image_view=AcquireVirtualCacheView(image,exception); #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp parallel for schedule(static) shared(status,initialize) \ + #pragma omp parallel for schedule(static) shared(status) \ magick_number_threads(image,image,image->rows,1) #endif for (y=0; y < (ssize_t) image->rows; y++) { double - row_maxima = 0.0, - row_minima = 0.0; - - MagickBooleanType - row_initialize; + row_maxima = MagickMinimumValue, + row_minima = MagickMaximumValue; const Quantum *magick_restrict p; @@ -1896,7 +1892,8 @@ MagickExport MagickBooleanType GetImageRange(const Image *image,double *minima, status=MagickFalse; continue; } - row_initialize=MagickTrue; + row_maxima=(double) p[0]; + row_minima=(double) p[0]; for (x=0; x < (ssize_t) image->columns; x++) { ssize_t @@ -1910,39 +1907,21 @@ MagickExport MagickBooleanType GetImageRange(const Image *image,double *minima, continue; if ((traits & UpdatePixelTrait) == 0) continue; - if (row_initialize != MagickFalse) - { - row_minima=(double) p[i]; - row_maxima=(double) p[i]; - row_initialize=MagickFalse; - } - else - { - if ((double) p[i] < row_minima) - row_minima=(double) p[i]; - if ((double) p[i] > row_maxima) - row_maxima=(double) p[i]; - } + if ((double) p[i] < row_minima) + row_minima=(double) p[i]; + if ((double) p[i] > row_maxima) + row_maxima=(double) p[i]; } p+=(ptrdiff_t) GetPixelChannels(image); } #if defined(MAGICKCORE_OPENMP_SUPPORT) -#pragma omp critical (MagickCore_GetImageRange) + #pragma omp critical (MagickCore_GetImageRange) #endif { - if (initialize != MagickFalse) - { - *minima=row_minima; - *maxima=row_maxima; - initialize=MagickFalse; - } - else - { - if (row_minima < *minima) - *minima=row_minima; - if (row_maxima > *maxima) - *maxima=row_maxima; - } + if (row_minima < *minima) + *minima=row_minima; + if (row_maxima > *maxima) + *maxima=row_maxima; } } image_view=DestroyCacheView(image_view); @@ -2106,7 +2085,7 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image, { ChannelStatistics *cs = channel_statistics+i; cs->area=0.0; - cs->depth=1.0; + cs->depth=1; cs->maxima=(-MagickMaximumValue); cs->minima=MagickMaximumValue; cs->sum=0.0; @@ -2224,7 +2203,7 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image, cs->mean=0.0; if (cs->area > 0) { - cs->mean=cs->sumLD/(long double) cs->area; + cs->mean=(double) (cs->sumLD/(long double) cs->area); if (cs->area > 1.0) AdjArea=cs->area/(cs->area-1.0); } @@ -2239,12 +2218,12 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image, else { if (cs->area > 1.0) - cs->standard_deviation=sqrtl(cs->M2/((long double) cs->area-1.0)); + cs->standard_deviation=(double) sqrtl(cs->M2/((long double) cs->area-1.0)); else - cs->standard_deviation=sqrtl(cs->M2/((long double) cs->area)); + cs->standard_deviation=(double) sqrtl(cs->M2/((long double) cs->area)); cs->variance=cs->standard_deviation*cs->standard_deviation; - cs->skewness=sqrtl(cs->area)*cs->M3/powl(cs->M2*AdjArea,1.5); - cs->kurtosis=cs->area*cs->M4/(cs->M2*cs->M2*AdjArea*AdjArea)-3.0; + cs->skewness=(double) (sqrtl(cs->area)*cs->M3/powl(cs->M2*AdjArea,1.5)); + cs->kurtosis=(double) (cs->area*cs->M4/(cs->M2*cs->M2*AdjArea*AdjArea)-3.0); } } @@ -2278,7 +2257,7 @@ MagickExport ChannelStatistics *GetImageStatistics(const Image *image, double count; - count=area*histogram[(ssize_t) GetPixelChannels(image)*j+i]; + count=(double) (area*histogram[(ssize_t) GetPixelChannels(image)*j+i]); channel_statistics[channel].entropy+=((long double) -count* MagickLog10(count)*PerceptibleReciprocalLD((long double) MagickLog10(number_bins))); diff --git a/ImageMagick-7.1.1-43/MagickCore/statistic.h b/ImageMagick-7.1.1-44/MagickCore/statistic.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/statistic.h rename to ImageMagick-7.1.1-44/MagickCore/statistic.h diff --git a/ImageMagick-7.1.1-43/MagickCore/stream-private.h b/ImageMagick-7.1.1-44/MagickCore/stream-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/stream-private.h rename to ImageMagick-7.1.1-44/MagickCore/stream-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/stream.c b/ImageMagick-7.1.1-44/MagickCore/stream.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/stream.c rename to ImageMagick-7.1.1-44/MagickCore/stream.c diff --git a/ImageMagick-7.1.1-43/MagickCore/stream.h b/ImageMagick-7.1.1-44/MagickCore/stream.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/stream.h rename to ImageMagick-7.1.1-44/MagickCore/stream.h diff --git a/ImageMagick-7.1.1-43/MagickCore/string-private.h b/ImageMagick-7.1.1-44/MagickCore/string-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/string-private.h rename to ImageMagick-7.1.1-44/MagickCore/string-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/string.c b/ImageMagick-7.1.1-44/MagickCore/string.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/string.c rename to ImageMagick-7.1.1-44/MagickCore/string.c diff --git a/ImageMagick-7.1.1-43/MagickCore/string_.h b/ImageMagick-7.1.1-44/MagickCore/string_.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/string_.h rename to ImageMagick-7.1.1-44/MagickCore/string_.h diff --git a/ImageMagick-7.1.1-43/MagickCore/studio.h b/ImageMagick-7.1.1-44/MagickCore/studio.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/studio.h rename to ImageMagick-7.1.1-44/MagickCore/studio.h diff --git a/ImageMagick-7.1.1-43/MagickCore/thread-private.h b/ImageMagick-7.1.1-44/MagickCore/thread-private.h similarity index 97% rename from ImageMagick-7.1.1-43/MagickCore/thread-private.h rename to ImageMagick-7.1.1-44/MagickCore/thread-private.h index 23ba9b6ce..a0dc325cd 100644 --- a/ImageMagick-7.1.1-43/MagickCore/thread-private.h +++ b/ImageMagick-7.1.1-44/MagickCore/thread-private.h @@ -62,8 +62,8 @@ static inline int GetMagickNumberThreads(const Image *source, /* Return number of threads dependent on cache type and work load. */ - number_threads=(int) MagickMax(MagickMin(chunk/WorkLoadFactor, - GetMagickResourceLimit(ThreadResource)),1); + number_threads=(int) MagickMax(MagickMin((MagickSizeType) chunk/ + WorkLoadFactor,GetMagickResourceLimit(ThreadResource)),1); if (((source_type != MemoryCache) && (source_type != MapCache)) || ((destination_type != MemoryCache) && (destination_type != MapCache))) number_threads=MagickMin(number_threads,2); diff --git a/ImageMagick-7.1.1-43/MagickCore/thread.c b/ImageMagick-7.1.1-44/MagickCore/thread.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/thread.c rename to ImageMagick-7.1.1-44/MagickCore/thread.c diff --git a/ImageMagick-7.1.1-43/MagickCore/thread_.h b/ImageMagick-7.1.1-44/MagickCore/thread_.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/thread_.h rename to ImageMagick-7.1.1-44/MagickCore/thread_.h diff --git a/ImageMagick-7.1.1-43/MagickCore/threshold.c b/ImageMagick-7.1.1-44/MagickCore/threshold.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/threshold.c rename to ImageMagick-7.1.1-44/MagickCore/threshold.c diff --git a/ImageMagick-7.1.1-43/MagickCore/threshold.h b/ImageMagick-7.1.1-44/MagickCore/threshold.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/threshold.h rename to ImageMagick-7.1.1-44/MagickCore/threshold.h diff --git a/ImageMagick-7.1.1-43/MagickCore/timer-private.h b/ImageMagick-7.1.1-44/MagickCore/timer-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/timer-private.h rename to ImageMagick-7.1.1-44/MagickCore/timer-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/timer.c b/ImageMagick-7.1.1-44/MagickCore/timer.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/timer.c rename to ImageMagick-7.1.1-44/MagickCore/timer.c diff --git a/ImageMagick-7.1.1-43/MagickCore/timer.h b/ImageMagick-7.1.1-44/MagickCore/timer.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/timer.h rename to ImageMagick-7.1.1-44/MagickCore/timer.h diff --git a/ImageMagick-7.1.1-43/MagickCore/token-private.h b/ImageMagick-7.1.1-44/MagickCore/token-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/token-private.h rename to ImageMagick-7.1.1-44/MagickCore/token-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/token.c b/ImageMagick-7.1.1-44/MagickCore/token.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/token.c rename to ImageMagick-7.1.1-44/MagickCore/token.c diff --git a/ImageMagick-7.1.1-43/MagickCore/token.h b/ImageMagick-7.1.1-44/MagickCore/token.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/token.h rename to ImageMagick-7.1.1-44/MagickCore/token.h diff --git a/ImageMagick-7.1.1-43/MagickCore/transform-private.h b/ImageMagick-7.1.1-44/MagickCore/transform-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/transform-private.h rename to ImageMagick-7.1.1-44/MagickCore/transform-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/transform.c b/ImageMagick-7.1.1-44/MagickCore/transform.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/transform.c rename to ImageMagick-7.1.1-44/MagickCore/transform.c index c6cd79f09..1b5c9abde 100644 --- a/ImageMagick-7.1.1-43/MagickCore/transform.c +++ b/ImageMagick-7.1.1-44/MagickCore/transform.c @@ -615,24 +615,28 @@ MagickExport Image *CropImage(const Image *image,const RectangleInfo *geometry, } if ((page.x < 0) && (bounding_box.x >= 0)) { - page.width=(size_t) ((ssize_t) page.width+page.x-bounding_box.x); + page.width=CastDoubleToUnsigned((double) page.width+page.x- + bounding_box.x); page.x=0; } else { - page.width=(size_t) ((ssize_t) page.width-(bounding_box.x-page.x)); + page.width=CastDoubleToUnsigned((double) page.width-(bounding_box.x- + page.x)); page.x-=bounding_box.x; if (page.x < 0) page.x=0; } if ((page.y < 0) && (bounding_box.y >= 0)) { - page.height=(size_t) ((ssize_t) page.height+page.y-bounding_box.y); + page.height=CastDoubleToUnsigned((double) page.height+page.y- + bounding_box.y); page.y=0; } else { - page.height=(size_t) ((ssize_t) page.height-(bounding_box.y-page.y)); + page.height=CastDoubleToUnsigned((double) page.height-(bounding_box.y- + page.y)); page.y-=bounding_box.y; if (page.y < 0) page.y=0; diff --git a/ImageMagick-7.1.1-43/MagickCore/transform.h b/ImageMagick-7.1.1-44/MagickCore/transform.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/transform.h rename to ImageMagick-7.1.1-44/MagickCore/transform.h diff --git a/ImageMagick-7.1.1-43/MagickCore/type-private.h b/ImageMagick-7.1.1-44/MagickCore/type-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/type-private.h rename to ImageMagick-7.1.1-44/MagickCore/type-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/type.c b/ImageMagick-7.1.1-44/MagickCore/type.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/type.c rename to ImageMagick-7.1.1-44/MagickCore/type.c index 59213381d..1a1f96cbc 100644 --- a/ImageMagick-7.1.1-43/MagickCore/type.c +++ b/ImageMagick-7.1.1-44/MagickCore/type.c @@ -769,7 +769,7 @@ MagickExport MagickBooleanType LoadFontConfigFonts(SplayTreeInfo *type_cache, font_config=FcConfigGetCurrent(); if (font_config == (FcConfig *) NULL) return(MagickFalse); - FcConfigSetRescanInterval(font_config,0); + (void) FcConfigSetRescanInterval(font_config,0); font_set=(FcFontSet *) NULL; object_set=FcObjectSetBuild(FC_FULLNAME,FC_FAMILY,FC_STYLE,FC_SLANT, FC_WIDTH,FC_WEIGHT,FC_FILE,FC_INDEX,(char *) NULL); diff --git a/ImageMagick-7.1.1-43/MagickCore/type.h b/ImageMagick-7.1.1-44/MagickCore/type.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/type.h rename to ImageMagick-7.1.1-44/MagickCore/type.h diff --git a/ImageMagick-7.1.1-43/MagickCore/utility-private.h b/ImageMagick-7.1.1-44/MagickCore/utility-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/utility-private.h rename to ImageMagick-7.1.1-44/MagickCore/utility-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/utility.c b/ImageMagick-7.1.1-44/MagickCore/utility.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/utility.c rename to ImageMagick-7.1.1-44/MagickCore/utility.c diff --git a/ImageMagick-7.1.1-43/MagickCore/utility.h b/ImageMagick-7.1.1-44/MagickCore/utility.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/utility.h rename to ImageMagick-7.1.1-44/MagickCore/utility.h diff --git a/ImageMagick-7.1.1-43/MagickCore/version-private.h b/ImageMagick-7.1.1-44/MagickCore/version-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/version-private.h rename to ImageMagick-7.1.1-44/MagickCore/version-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/version.c b/ImageMagick-7.1.1-44/MagickCore/version.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/version.c rename to ImageMagick-7.1.1-44/MagickCore/version.c diff --git a/ImageMagick-7.1.1-43/MagickCore/vision.c b/ImageMagick-7.1.1-44/MagickCore/vision.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/vision.c rename to ImageMagick-7.1.1-44/MagickCore/vision.c diff --git a/ImageMagick-7.1.1-43/MagickCore/vision.h b/ImageMagick-7.1.1-44/MagickCore/vision.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/vision.h rename to ImageMagick-7.1.1-44/MagickCore/vision.h diff --git a/ImageMagick-7.1.1-43/MagickCore/visual-effects.c b/ImageMagick-7.1.1-44/MagickCore/visual-effects.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/visual-effects.c rename to ImageMagick-7.1.1-44/MagickCore/visual-effects.c index 58a6ac76f..3fc82e07c 100644 --- a/ImageMagick-7.1.1-43/MagickCore/visual-effects.c +++ b/ImageMagick-7.1.1-44/MagickCore/visual-effects.c @@ -1091,8 +1091,8 @@ MagickExport Image *ImplodeImage(const Image *image,const double amount, PerceptibleReciprocal(radius)/2.0),-amount); offset.x=factor*delta.x*PerceptibleReciprocal(scale.x)+center.x; offset.y=factor*delta.y*PerceptibleReciprocal(scale.y)+center.y; - if ((IsValidPixelOffset(offset.x,image->columns) != MagickFalse) && - (IsValidPixelOffset(offset.y,image->rows) != MagickFalse)) + if ((IsValidPixelOffset((ssize_t) offset.x,image->columns) != MagickFalse) && + (IsValidPixelOffset((ssize_t) offset.y,image->rows) != MagickFalse)) status=InterpolatePixelChannels(canvas_image,interpolate_view, implode_image,method,offset.x,offset.y,q,exception); if (status == MagickFalse) diff --git a/ImageMagick-7.1.1-43/MagickCore/visual-effects.h b/ImageMagick-7.1.1-44/MagickCore/visual-effects.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/visual-effects.h rename to ImageMagick-7.1.1-44/MagickCore/visual-effects.h diff --git a/ImageMagick-7.1.1-43/MagickCore/vms.c b/ImageMagick-7.1.1-44/MagickCore/vms.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/vms.c rename to ImageMagick-7.1.1-44/MagickCore/vms.c diff --git a/ImageMagick-7.1.1-43/MagickCore/vms.h b/ImageMagick-7.1.1-44/MagickCore/vms.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/vms.h rename to ImageMagick-7.1.1-44/MagickCore/vms.h diff --git a/ImageMagick-7.1.1-43/MagickCore/widget-private.h b/ImageMagick-7.1.1-44/MagickCore/widget-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/widget-private.h rename to ImageMagick-7.1.1-44/MagickCore/widget-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/widget.c b/ImageMagick-7.1.1-44/MagickCore/widget.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/widget.c rename to ImageMagick-7.1.1-44/MagickCore/widget.c diff --git a/ImageMagick-7.1.1-43/MagickCore/widget.h b/ImageMagick-7.1.1-44/MagickCore/widget.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/widget.h rename to ImageMagick-7.1.1-44/MagickCore/widget.h diff --git a/ImageMagick-7.1.1-43/MagickCore/xml-tree-private.h b/ImageMagick-7.1.1-44/MagickCore/xml-tree-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/xml-tree-private.h rename to ImageMagick-7.1.1-44/MagickCore/xml-tree-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/xml-tree.c b/ImageMagick-7.1.1-44/MagickCore/xml-tree.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/xml-tree.c rename to ImageMagick-7.1.1-44/MagickCore/xml-tree.c diff --git a/ImageMagick-7.1.1-43/MagickCore/xml-tree.h b/ImageMagick-7.1.1-44/MagickCore/xml-tree.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/xml-tree.h rename to ImageMagick-7.1.1-44/MagickCore/xml-tree.h diff --git a/ImageMagick-7.1.1-43/MagickCore/xwindow-private.h b/ImageMagick-7.1.1-44/MagickCore/xwindow-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/xwindow-private.h rename to ImageMagick-7.1.1-44/MagickCore/xwindow-private.h diff --git a/ImageMagick-7.1.1-43/MagickCore/xwindow.c b/ImageMagick-7.1.1-44/MagickCore/xwindow.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickCore/xwindow.c rename to ImageMagick-7.1.1-44/MagickCore/xwindow.c index 50027e3ba..f14ff4249 100644 --- a/ImageMagick-7.1.1-43/MagickCore/xwindow.c +++ b/ImageMagick-7.1.1-44/MagickCore/xwindow.c @@ -1155,7 +1155,7 @@ MagickPrivate XVisualInfo *XBestVisualInfo(Display *display, XStandardColormap *map_info,XResourceInfo *resource_info) { #define MaxStandardColormaps 7 -#define XVisualColormapSize(visual_info) MagickMin((unsigned int) (\ +#define XVisualColormapSize(visual_info) MagickMin((unsigned long int) (\ (visual_info->klass == TrueColor) || (visual_info->klass == DirectColor) ? \ visual_info->red_mask | visual_info->green_mask | visual_info->blue_mask : \ (unsigned long) visual_info->colormap_size),1UL << visual_info->depth) @@ -4084,10 +4084,10 @@ static Image *XGetWindowImage(Display *display,const Window window, crop_info.y=0; } display_width=XDisplayWidth(display,XDefaultScreen(display)); - if ((crop_info.x+(int) crop_info.width) > display_width) + if ((int) (crop_info.x+(int) crop_info.width) > display_width) crop_info.width=(size_t) (display_width-crop_info.x); display_height=XDisplayHeight(display,XDefaultScreen(display)); - if ((crop_info.y+(int) crop_info.height) > display_height) + if ((int) (crop_info.y+(int) crop_info.height) > display_height) crop_info.height=(size_t) (display_height-crop_info.y); /* Initialize window info attributes. @@ -7816,16 +7816,16 @@ MagickPrivate void XMakeStandardColormap(Display *display, { for (i=0; i < (ssize_t) number_colors; i++) { - SetPixelRed(affinity_image,0,q); + SetPixelRed(affinity_image,(Quantum) 0,q); if (map_info->red_max != 0) SetPixelRed(affinity_image,ScaleXToQuantum((size_t) (i/(ssize_t) map_info->red_mult),map_info->red_max),q); - SetPixelGreen(affinity_image,0,q); + SetPixelGreen(affinity_image,(Quantum) 0,q); if (map_info->green_max != 0) SetPixelGreen(affinity_image,ScaleXToQuantum((size_t) ((i/(ssize_t) map_info->green_mult) % (ssize_t) (map_info->green_max+1)),map_info->green_max),q); - SetPixelBlue(affinity_image,0,q); + SetPixelBlue(affinity_image,(Quantum) 0,q); if (map_info->blue_max != 0) SetPixelBlue(affinity_image,ScaleXToQuantum((size_t) (i % (ssize_t) map_info->green_mult),map_info->blue_max), diff --git a/ImageMagick-7.1.1-43/MagickCore/xwindow.h b/ImageMagick-7.1.1-44/MagickCore/xwindow.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickCore/xwindow.h rename to ImageMagick-7.1.1-44/MagickCore/xwindow.h diff --git a/ImageMagick-7.1.1-43/MagickWand/MagickWand.h b/ImageMagick-7.1.1-44/MagickWand/MagickWand.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/MagickWand.h rename to ImageMagick-7.1.1-44/MagickWand/MagickWand.h diff --git a/ImageMagick-7.1.1-43/MagickWand/animate.c b/ImageMagick-7.1.1-44/MagickWand/animate.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/animate.c rename to ImageMagick-7.1.1-44/MagickWand/animate.c diff --git a/ImageMagick-7.1.1-43/MagickWand/animate.h b/ImageMagick-7.1.1-44/MagickWand/animate.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/animate.h rename to ImageMagick-7.1.1-44/MagickWand/animate.h diff --git a/ImageMagick-7.1.1-43/MagickWand/compare.c b/ImageMagick-7.1.1-44/MagickWand/compare.c similarity index 93% rename from ImageMagick-7.1.1-43/MagickWand/compare.c rename to ImageMagick-7.1.1-44/MagickWand/compare.c index d250d16d1..e91a826bd 100644 --- a/ImageMagick-7.1.1-43/MagickWand/compare.c +++ b/ImageMagick-7.1.1-44/MagickWand/compare.c @@ -44,6 +44,7 @@ #include "MagickWand/studio.h" #include "MagickWand/MagickWand.h" #include "MagickWand/mogrify-private.h" +#include "MagickCore/image-private.h" #include "MagickCore/string-private.h" /* @@ -200,7 +201,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, int argc,char **argv,char **metadata,ExceptionInfo *exception) { #define CompareEpsilon (1.0e-06) -#define DefaultDissimilarityThreshold 0.31830988618379067154 +#define DefaultDissimilarityThreshold (1.0/MagickPI) #define DefaultSimilarityThreshold (-1.0) #define DestroyCompare() \ { \ @@ -255,6 +256,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, fire, pend, respect_parentheses, + similar = MagickTrue, subimage_search; MagickStatusType @@ -303,6 +305,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, dissimilarity_threshold=DefaultDissimilarityThreshold; similarity_threshold=DefaultSimilarityThreshold; distortion=0.0; + similarity_metric=0.0; format=(char *) NULL; j=1; k=0; @@ -1170,70 +1173,96 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, { similarity_image=SimilarityImage(image,reconstruct_image,metric, similarity_threshold,&offset,&similarity_metric,exception); - if (similarity_metric > dissimilarity_threshold) - ThrowCompareException(ImageError,"ImagesTooDissimilar",image->filename); + if (dissimilarity_threshold == DefaultDissimilarityThreshold) + switch (metric) + { + case PhaseCorrelationErrorMetric: + case PeakSignalToNoiseRatioErrorMetric: + { + dissimilarity_threshold=1.0; + break; + } + default: + break; + } + if (similarity_metric > (dissimilarity_threshold+MagickEpsilon)) + (void) ThrowMagickException(exception,GetMagickModule(),ImageWarning, + "ImagesTooDissimilar","`%s'",image->filename); } - if ((reconstruct_image->columns == image->columns) && - (reconstruct_image->rows == image->rows)) + if (similarity_image == (Image *) NULL) difference_image=CompareImages(image,reconstruct_image,metric,&distortion, exception); else - if (similarity_image == (Image *) NULL) - difference_image=CompareImages(image,reconstruct_image,metric,&distortion, - exception); - else - { - Image - *composite_image; + { + Image + *composite_image; - /* - Determine if reconstructed image is a subimage of the image. - */ - composite_image=CloneImage(image,0,0,MagickTrue,exception); - if (composite_image == (Image *) NULL) - difference_image=CompareImages(image,reconstruct_image,metric, - &distortion,exception); - else - { - Image - *distort_image; + /* + Determine if reconstructed image is a subimage of the image. + */ + composite_image=CloneImage(image,0,0,MagickTrue,exception); + if (composite_image == (Image *) NULL) + difference_image=CompareImages(image,reconstruct_image,metric, + &distortion,exception); + else + { + Image + *distort_image; - RectangleInfo - page; + RectangleInfo + page; - (void) CompositeImage(composite_image,reconstruct_image, - CopyCompositeOp,MagickTrue,offset.x,offset.y,exception); - difference_image=CompareImages(image,composite_image,metric, - &distortion,exception); - if (difference_image != (Image *) NULL) - { - difference_image->page.x=offset.x; - difference_image->page.y=offset.y; - } - composite_image=DestroyImage(composite_image); - page.width=reconstruct_image->columns; - page.height=reconstruct_image->rows; - page.x=offset.x; - page.y=offset.y; - distort_image=CropImage(image,&page,exception); - if (distort_image != (Image *) NULL) - { - Image - *sans_image; + (void) CompositeImage(composite_image,reconstruct_image, + CopyCompositeOp,MagickTrue,offset.x,offset.y,exception); + difference_image=CompareImages(image,composite_image,metric, + &distortion,exception); + if (difference_image != (Image *) NULL) + { + difference_image->page.x=offset.x; + difference_image->page.y=offset.y; + } + composite_image=DestroyImage(composite_image); + page.width=reconstruct_image->columns; + page.height=reconstruct_image->rows; + page.x=offset.x; + page.y=offset.y; + distort_image=CropImage(image,&page,exception); + if (distort_image != (Image *) NULL) + { + Image + *sans_image; - sans_image=CompareImages(distort_image,reconstruct_image,metric, - &distortion,exception); - distort_image=DestroyImage(distort_image); - if (sans_image != (Image *) NULL) - sans_image=DestroyImage(sans_image); - } - } - if (difference_image != (Image *) NULL) - { - AppendImageToList(&difference_image,similarity_image); - similarity_image=(Image *) NULL; - } - } + sans_image=CompareImages(distort_image,reconstruct_image,metric, + &distortion,exception); + distort_image=DestroyImage(distort_image); + if (sans_image != (Image *) NULL) + sans_image=DestroyImage(sans_image); + } + } + if (difference_image != (Image *) NULL) + { + AppendImageToList(&difference_image,similarity_image); + similarity_image=(Image *) NULL; + } + } + switch (metric) + { + case DotProductCorrelationErrorMetric: + case NormalizedCrossCorrelationErrorMetric: + { + distortion=1.0-distortion; + similarity_metric=1.0-similarity_metric; + break; + } + case PhaseCorrelationErrorMetric: + { + distortion=1.0-distortion; + break; + } + default: break; + } + if (fabs(distortion) > CompareEpsilon) + similar=MagickFalse; if (difference_image == (Image *) NULL) status=0; else @@ -1247,7 +1276,14 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, { switch (metric) { + case AbsoluteErrorMetric: + case DotProductCorrelationErrorMetric: case FuzzErrorMetric: + case NormalizedCrossCorrelationErrorMetric: + case PerceptualHashErrorMetric: + case PhaseCorrelationErrorMetric: + case StructuralSimilarityErrorMetric: + case StructuralDissimilarityErrorMetric: case MeanAbsoluteErrorMetric: case MeanSquaredErrorMetric: case PeakAbsoluteErrorMetric: @@ -1261,16 +1297,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, case PeakSignalToNoiseRatioErrorMetric: { (void) FormatLocaleFile(stderr,"%.*g (%.*g)",GetMagickPrecision(), - distortion,GetMagickPrecision(),0.01*distortion); - break; - } - case AbsoluteErrorMetric: - case NormalizedCrossCorrelationErrorMetric: - case PerceptualHashErrorMetric: - case StructuralSimilarityErrorMetric: - case StructuralDissimilarityErrorMetric: - { - (void) FormatLocaleFile(stderr,"%.*g",GetMagickPrecision(), + (double) QuantumRange*distortion,GetMagickPrecision(), distortion); break; } @@ -1286,9 +1313,10 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, break; } if (subimage_search != MagickFalse) - (void) FormatLocaleFile(stderr," @ %.20g,%.20g", + (void) FormatLocaleFile(stderr," @ %.20g,%.20g [%.*g]", (double) difference_image->page.x, - (double) difference_image->page.y); + (double) difference_image->page.y,GetMagickPrecision(), + similarity_metric); } else { @@ -1387,9 +1415,11 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, break; } case AbsoluteErrorMetric: + case DotProductCorrelationErrorMetric: case NormalizedCrossCorrelationErrorMetric: case PeakSignalToNoiseRatioErrorMetric: case PerceptualHashErrorMetric: + case PhaseCorrelationErrorMetric: case StructuralSimilarityErrorMetric: case StructuralDissimilarityErrorMetric: { @@ -1459,8 +1489,12 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, channel_distortion=(double *) RelinquishMagickMemory( channel_distortion); if (subimage_search != MagickFalse) - (void) FormatLocaleFile(stderr," Offset: %.20g,%.20g\n",(double) - difference_image->page.x,(double) difference_image->page.y); + { + (void) FormatLocaleFile(stderr," Offset: %.20g,%.20g\n",(double) + difference_image->page.x,(double) difference_image->page.y); + (void) FormatLocaleFile(stderr," Similarity metric: %*g\n", + GetMagickPrecision(),similarity_metric); + } } (void) ResetImagePage(difference_image,"0x0+0+0"); if (difference_image->next != (Image *) NULL) @@ -1483,15 +1517,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, difference_image=DestroyImageList(difference_image); } DestroyCompare(); - if ((metric == NormalizedCrossCorrelationErrorMetric) || - (metric == StructuralSimilarityErrorMetric) || - (metric == UndefinedErrorMetric)) - { - if (fabs(distortion-1.0) > CompareEpsilon) - (void) SetImageOption(image_info,"compare:dissimilar","true"); - } - else - if (fabs(distortion) > CompareEpsilon) - (void) SetImageOption(image_info,"compare:dissimilar","true"); + if (similar == MagickFalse) + (void) SetImageOption(image_info,"compare:dissimilar","true"); return(status != 0 ? MagickTrue : MagickFalse); } diff --git a/ImageMagick-7.1.1-43/MagickWand/compare.h b/ImageMagick-7.1.1-44/MagickWand/compare.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/compare.h rename to ImageMagick-7.1.1-44/MagickWand/compare.h diff --git a/ImageMagick-7.1.1-43/MagickWand/composite.c b/ImageMagick-7.1.1-44/MagickWand/composite.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/composite.c rename to ImageMagick-7.1.1-44/MagickWand/composite.c diff --git a/ImageMagick-7.1.1-43/MagickWand/composite.h b/ImageMagick-7.1.1-44/MagickWand/composite.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/composite.h rename to ImageMagick-7.1.1-44/MagickWand/composite.h diff --git a/ImageMagick-7.1.1-43/MagickWand/conjure.c b/ImageMagick-7.1.1-44/MagickWand/conjure.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/conjure.c rename to ImageMagick-7.1.1-44/MagickWand/conjure.c diff --git a/ImageMagick-7.1.1-43/MagickWand/conjure.h b/ImageMagick-7.1.1-44/MagickWand/conjure.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/conjure.h rename to ImageMagick-7.1.1-44/MagickWand/conjure.h diff --git a/ImageMagick-7.1.1-43/MagickWand/deprecate.c b/ImageMagick-7.1.1-44/MagickWand/deprecate.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/deprecate.c rename to ImageMagick-7.1.1-44/MagickWand/deprecate.c diff --git a/ImageMagick-7.1.1-43/MagickWand/deprecate.h b/ImageMagick-7.1.1-44/MagickWand/deprecate.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/deprecate.h rename to ImageMagick-7.1.1-44/MagickWand/deprecate.h diff --git a/ImageMagick-7.1.1-43/MagickWand/display.c b/ImageMagick-7.1.1-44/MagickWand/display.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/display.c rename to ImageMagick-7.1.1-44/MagickWand/display.c diff --git a/ImageMagick-7.1.1-43/MagickWand/display.h b/ImageMagick-7.1.1-44/MagickWand/display.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/display.h rename to ImageMagick-7.1.1-44/MagickWand/display.h diff --git a/ImageMagick-7.1.1-43/MagickWand/drawing-wand.c b/ImageMagick-7.1.1-44/MagickWand/drawing-wand.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/drawing-wand.c rename to ImageMagick-7.1.1-44/MagickWand/drawing-wand.c diff --git a/ImageMagick-7.1.1-43/MagickWand/drawing-wand.h b/ImageMagick-7.1.1-44/MagickWand/drawing-wand.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/drawing-wand.h rename to ImageMagick-7.1.1-44/MagickWand/drawing-wand.h diff --git a/ImageMagick-7.1.1-43/MagickWand/identify.c b/ImageMagick-7.1.1-44/MagickWand/identify.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/identify.c rename to ImageMagick-7.1.1-44/MagickWand/identify.c diff --git a/ImageMagick-7.1.1-43/MagickWand/identify.h b/ImageMagick-7.1.1-44/MagickWand/identify.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/identify.h rename to ImageMagick-7.1.1-44/MagickWand/identify.h diff --git a/ImageMagick-7.1.1-43/MagickWand/import.c b/ImageMagick-7.1.1-44/MagickWand/import.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/import.c rename to ImageMagick-7.1.1-44/MagickWand/import.c diff --git a/ImageMagick-7.1.1-43/MagickWand/import.h b/ImageMagick-7.1.1-44/MagickWand/import.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/import.h rename to ImageMagick-7.1.1-44/MagickWand/import.h diff --git a/ImageMagick-7.1.1-43/MagickWand/magick-cli.c b/ImageMagick-7.1.1-44/MagickWand/magick-cli.c similarity index 98% rename from ImageMagick-7.1.1-43/MagickWand/magick-cli.c rename to ImageMagick-7.1.1-44/MagickWand/magick-cli.c index 01430ed3b..9bb2316b0 100644 --- a/ImageMagick-7.1.1-43/MagickWand/magick-cli.c +++ b/ImageMagick-7.1.1-44/MagickWand/magick-cli.c @@ -395,11 +395,11 @@ RestoreMSCWarning do { /* use break to loop to exception handler and loop */ /* save option details */ - CloneString(&option,token_info->token); + (void) CloneString(&option,token_info->token); /* get option, its argument count, and option type */ cli_wand->command = GetCommandOptionInfo(option); - count=cli_wand->command->type; + count=(int) cli_wand->command->type; option_type=(CommandOptionFlags) cli_wand->command->flags; #if 0 (void) FormatLocaleFile(stderr, "Script: %u,%u: \"%s\" matched \"%s\"\n", @@ -426,18 +426,18 @@ RestoreMSCWarning if ( count >= 1 ) { if (GetScriptToken(token_info) == MagickFalse) CLIWandException(OptionFatalError,"MissingArgument",option); - CloneString(&arg1,token_info->token); + (void) CloneString(&arg1,token_info->token); } else - CloneString(&arg1,(char *) NULL); + (void) CloneString(&arg1,(char *) NULL); if ( count >= 2 ) { if (GetScriptToken(token_info) == MagickFalse) CLIWandExceptionBreak(OptionFatalError,"MissingArgument",option); - CloneString(&arg2,token_info->token); + (void) CloneString(&arg2,token_info->token); } else - CloneString(&arg2,(char *) NULL); + (void) CloneString(&arg2,(char *) NULL); /* Process Options @@ -534,9 +534,9 @@ RestoreMSCWarning /* Clean up */ token_info = DestroyScriptTokenInfo(token_info); - CloneString(&option,(char *) NULL); - CloneString(&arg1,(char *) NULL); - CloneString(&arg2,(char *) NULL); + (void) CloneString(&option,(char *) NULL); + (void) CloneString(&arg1,(char *) NULL); + (void) CloneString(&arg2,(char *) NULL); return; } @@ -633,7 +633,7 @@ WandExport int ProcessCommandOptions(MagickCLI *cli_wand,int argc,char **argv, /* get option, its argument count, and option type */ cli_wand->command = GetCommandOptionInfo(argv[i]); - count=cli_wand->command->type; + count=(int) cli_wand->command->type; option_type=(CommandOptionFlags) cli_wand->command->flags; #if 0 (void) FormatLocaleFile(stderr, "CLI %d: \"%s\" matched \"%s\"\n", @@ -1175,7 +1175,7 @@ static void MagickUsage(MagickBooleanType verbose) if (verbose == MagickFalse) { - MagickCommandUsage(); + (void) MagickCommandUsage(); return; } @@ -1307,8 +1307,8 @@ WandExport MagickBooleanType MagickImageCommand(ImageInfo *image_info,int argc, GetPathComponent(argv[0],TailPath,cli_wand->wand.name); - SetClientName(cli_wand->wand.name); - ConcatenateMagickString(cli_wand->wand.name,"-CLI",MagickPathExtent); + (void) SetClientName(cli_wand->wand.name); + (void) ConcatenateMagickString(cli_wand->wand.name,"-CLI",MagickPathExtent); len=strlen(argv[0]); /* precaution */ @@ -1366,7 +1366,7 @@ WandExport MagickBooleanType MagickImageCommand(ImageInfo *image_info,int argc, if (cli_wand->wand.debug != MagickFalse) (void) CLILogEvent(cli_wand,CommandEvent,GetMagickModule(), "- Special Option \"%s\"", argv[1]); - ConcatenateImages(argc,argv,exception); + (void) ConcatenateImages(argc,argv,exception); goto Magick_Command_Exit; } @@ -1427,7 +1427,7 @@ WandExport MagickBooleanType MagickImageCommand(ImageInfo *image_info,int argc, text=InterpretImageProperties(image_info,cli_wand->wand.images,format, exception); if (text == (char *) NULL) - ThrowMagickException(exception,GetMagickModule(),ResourceLimitError, + (void) ThrowMagickException(exception,GetMagickModule(),ResourceLimitError, "MemoryAllocationFailed","`%s'", GetExceptionMessage(errno)); else { diff --git a/ImageMagick-7.1.1-43/MagickWand/magick-cli.h b/ImageMagick-7.1.1-44/MagickWand/magick-cli.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/magick-cli.h rename to ImageMagick-7.1.1-44/MagickWand/magick-cli.h diff --git a/ImageMagick-7.1.1-43/MagickWand/magick-image.c b/ImageMagick-7.1.1-44/MagickWand/magick-image.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickWand/magick-image.c rename to ImageMagick-7.1.1-44/MagickWand/magick-image.c index 81d3c2f94..03c468c71 100644 --- a/ImageMagick-7.1.1-43/MagickWand/magick-image.c +++ b/ImageMagick-7.1.1-44/MagickWand/magick-image.c @@ -930,8 +930,8 @@ WandExport MagickBooleanType MagickBilateralBlurImage(MagickWand *wand, (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - blur_image=BilateralBlurImage(wand->images,radius,sigma,intensity_sigma, - spatial_sigma,wand->exception); + blur_image=BilateralBlurImage(wand->images,(size_t) radius,(size_t) sigma, + intensity_sigma,spatial_sigma,wand->exception); if (blur_image == (Image *) NULL) return(MagickFalse); ReplaceImageInList(&wand->images,blur_image); diff --git a/ImageMagick-7.1.1-43/MagickWand/magick-image.h b/ImageMagick-7.1.1-44/MagickWand/magick-image.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/magick-image.h rename to ImageMagick-7.1.1-44/MagickWand/magick-image.h diff --git a/ImageMagick-7.1.1-43/MagickWand/magick-property.c b/ImageMagick-7.1.1-44/MagickWand/magick-property.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/magick-property.c rename to ImageMagick-7.1.1-44/MagickWand/magick-property.c diff --git a/ImageMagick-7.1.1-43/MagickWand/magick-property.h b/ImageMagick-7.1.1-44/MagickWand/magick-property.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/magick-property.h rename to ImageMagick-7.1.1-44/MagickWand/magick-property.h diff --git a/ImageMagick-7.1.1-43/MagickWand/magick-wand-private.h b/ImageMagick-7.1.1-44/MagickWand/magick-wand-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/magick-wand-private.h rename to ImageMagick-7.1.1-44/MagickWand/magick-wand-private.h diff --git a/ImageMagick-7.1.1-43/MagickWand/magick-wand.c b/ImageMagick-7.1.1-44/MagickWand/magick-wand.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/magick-wand.c rename to ImageMagick-7.1.1-44/MagickWand/magick-wand.c diff --git a/ImageMagick-7.1.1-43/MagickWand/method-attribute.h b/ImageMagick-7.1.1-44/MagickWand/method-attribute.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/method-attribute.h rename to ImageMagick-7.1.1-44/MagickWand/method-attribute.h diff --git a/ImageMagick-7.1.1-43/MagickWand/mogrify-private.h b/ImageMagick-7.1.1-44/MagickWand/mogrify-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/mogrify-private.h rename to ImageMagick-7.1.1-44/MagickWand/mogrify-private.h diff --git a/ImageMagick-7.1.1-43/MagickWand/mogrify.c b/ImageMagick-7.1.1-44/MagickWand/mogrify.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickWand/mogrify.c rename to ImageMagick-7.1.1-44/MagickWand/mogrify.c index 5ccb5d4f0..311ab5c91 100644 --- a/ImageMagick-7.1.1-43/MagickWand/mogrify.c +++ b/ImageMagick-7.1.1-44/MagickWand/mogrify.c @@ -212,11 +212,11 @@ static MagickBooleanType MonitorProgress(const char *text, if (p == (char *) NULL) (void) FormatLocaleFile(stderr,"%s: %ld of %lu, %02ld%% complete\r", locale_message,(long) offset,(unsigned long) extent,(long) - (100.0*offset*PerceptibleReciprocal(extent-1.0))); + (100.0*offset*PerceptibleReciprocal((double) extent-1.0))); else (void) FormatLocaleFile(stderr,"%s[%s]: %ld of %lu, %02ld%% complete\r", locale_message,p+1,(long) offset,(unsigned long) extent,(long) - (100.0*offset*PerceptibleReciprocal(extent-1.0))); + (100.0*offset*PerceptibleReciprocal((double) extent-1.0))); if (offset == (MagickOffsetType) (extent-1)) (void) FormatLocaleFile(stderr,"\n"); (void) fflush(stderr); @@ -8330,7 +8330,6 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info, Image *fx_image; -puts("list"); (void) SyncImagesSettings(mogrify_info,*images,exception); fx_image=FxImage(*images,argv[i+1],exception); if (fx_image == (Image *) NULL) diff --git a/ImageMagick-7.1.1-43/MagickWand/mogrify.h b/ImageMagick-7.1.1-44/MagickWand/mogrify.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/mogrify.h rename to ImageMagick-7.1.1-44/MagickWand/mogrify.h diff --git a/ImageMagick-7.1.1-43/MagickWand/montage.c b/ImageMagick-7.1.1-44/MagickWand/montage.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/montage.c rename to ImageMagick-7.1.1-44/MagickWand/montage.c diff --git a/ImageMagick-7.1.1-43/MagickWand/montage.h b/ImageMagick-7.1.1-44/MagickWand/montage.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/montage.h rename to ImageMagick-7.1.1-44/MagickWand/montage.h diff --git a/ImageMagick-7.1.1-43/MagickWand/operation-private.h b/ImageMagick-7.1.1-44/MagickWand/operation-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/operation-private.h rename to ImageMagick-7.1.1-44/MagickWand/operation-private.h diff --git a/ImageMagick-7.1.1-43/MagickWand/operation.c b/ImageMagick-7.1.1-44/MagickWand/operation.c similarity index 99% rename from ImageMagick-7.1.1-43/MagickWand/operation.c rename to ImageMagick-7.1.1-44/MagickWand/operation.c index bbe00a5e5..5f6c8ee49 100644 --- a/ImageMagick-7.1.1-43/MagickWand/operation.c +++ b/ImageMagick-7.1.1-44/MagickWand/operation.c @@ -121,11 +121,11 @@ static MagickBooleanType MonitorProgress(const char *text, if (p == (char *) NULL) (void) FormatLocaleFile(stderr,"%s: %ld of %lu, %02ld%% complete\r", locale_message,(long) offset,(unsigned long) extent,(long) - (100.0*offset*PerceptibleReciprocal(extent-1.0))); + (100.0*offset*PerceptibleReciprocal((double) extent-1.0))); else (void) FormatLocaleFile(stderr,"%s[%s]: %ld of %lu, %02ld%% complete\r", locale_message,p+1,(long) offset,(unsigned long) extent,(long) - (100.0*offset*PerceptibleReciprocal(extent-1.0))); + (100.0*offset*PerceptibleReciprocal((double) extent-1.0))); if (offset == (MagickOffsetType) (extent-1)) (void) FormatLocaleFile(stderr,"\n"); (void) fflush(stderr); diff --git a/ImageMagick-7.1.1-43/MagickWand/operation.h b/ImageMagick-7.1.1-44/MagickWand/operation.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/operation.h rename to ImageMagick-7.1.1-44/MagickWand/operation.h diff --git a/ImageMagick-7.1.1-43/MagickWand/pixel-iterator.c b/ImageMagick-7.1.1-44/MagickWand/pixel-iterator.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/pixel-iterator.c rename to ImageMagick-7.1.1-44/MagickWand/pixel-iterator.c diff --git a/ImageMagick-7.1.1-43/MagickWand/pixel-iterator.h b/ImageMagick-7.1.1-44/MagickWand/pixel-iterator.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/pixel-iterator.h rename to ImageMagick-7.1.1-44/MagickWand/pixel-iterator.h diff --git a/ImageMagick-7.1.1-43/MagickWand/pixel-wand-private.h b/ImageMagick-7.1.1-44/MagickWand/pixel-wand-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/pixel-wand-private.h rename to ImageMagick-7.1.1-44/MagickWand/pixel-wand-private.h diff --git a/ImageMagick-7.1.1-43/MagickWand/pixel-wand.c b/ImageMagick-7.1.1-44/MagickWand/pixel-wand.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/pixel-wand.c rename to ImageMagick-7.1.1-44/MagickWand/pixel-wand.c diff --git a/ImageMagick-7.1.1-43/MagickWand/pixel-wand.h b/ImageMagick-7.1.1-44/MagickWand/pixel-wand.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/pixel-wand.h rename to ImageMagick-7.1.1-44/MagickWand/pixel-wand.h diff --git a/ImageMagick-7.1.1-43/MagickWand/script-token.c b/ImageMagick-7.1.1-44/MagickWand/script-token.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/script-token.c rename to ImageMagick-7.1.1-44/MagickWand/script-token.c diff --git a/ImageMagick-7.1.1-43/MagickWand/script-token.h b/ImageMagick-7.1.1-44/MagickWand/script-token.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/script-token.h rename to ImageMagick-7.1.1-44/MagickWand/script-token.h diff --git a/ImageMagick-7.1.1-43/MagickWand/stream.c b/ImageMagick-7.1.1-44/MagickWand/stream.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/stream.c rename to ImageMagick-7.1.1-44/MagickWand/stream.c diff --git a/ImageMagick-7.1.1-43/MagickWand/stream.h b/ImageMagick-7.1.1-44/MagickWand/stream.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/stream.h rename to ImageMagick-7.1.1-44/MagickWand/stream.h diff --git a/ImageMagick-7.1.1-43/MagickWand/studio.h b/ImageMagick-7.1.1-44/MagickWand/studio.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/studio.h rename to ImageMagick-7.1.1-44/MagickWand/studio.h diff --git a/ImageMagick-7.1.1-43/MagickWand/wand-view.c b/ImageMagick-7.1.1-44/MagickWand/wand-view.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/wand-view.c rename to ImageMagick-7.1.1-44/MagickWand/wand-view.c diff --git a/ImageMagick-7.1.1-43/MagickWand/wand-view.h b/ImageMagick-7.1.1-44/MagickWand/wand-view.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/wand-view.h rename to ImageMagick-7.1.1-44/MagickWand/wand-view.h diff --git a/ImageMagick-7.1.1-43/MagickWand/wand.c b/ImageMagick-7.1.1-44/MagickWand/wand.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/wand.c rename to ImageMagick-7.1.1-44/MagickWand/wand.c diff --git a/ImageMagick-7.1.1-43/MagickWand/wand.h b/ImageMagick-7.1.1-44/MagickWand/wand.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/wand.h rename to ImageMagick-7.1.1-44/MagickWand/wand.h diff --git a/ImageMagick-7.1.1-43/MagickWand/wandcli-private.h b/ImageMagick-7.1.1-44/MagickWand/wandcli-private.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/wandcli-private.h rename to ImageMagick-7.1.1-44/MagickWand/wandcli-private.h diff --git a/ImageMagick-7.1.1-43/MagickWand/wandcli.c b/ImageMagick-7.1.1-44/MagickWand/wandcli.c similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/wandcli.c rename to ImageMagick-7.1.1-44/MagickWand/wandcli.c diff --git a/ImageMagick-7.1.1-43/MagickWand/wandcli.h b/ImageMagick-7.1.1-44/MagickWand/wandcli.h similarity index 100% rename from ImageMagick-7.1.1-43/MagickWand/wandcli.h rename to ImageMagick-7.1.1-44/MagickWand/wandcli.h diff --git a/ImageMagick-7.1.1-43/coders/aai.c b/ImageMagick-7.1.1-44/coders/aai.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/aai.c rename to ImageMagick-7.1.1-44/coders/aai.c diff --git a/ImageMagick-7.1.1-43/coders/aai.h b/ImageMagick-7.1.1-44/coders/aai.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/aai.h rename to ImageMagick-7.1.1-44/coders/aai.h diff --git a/ImageMagick-7.1.1-43/coders/art.c b/ImageMagick-7.1.1-44/coders/art.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/art.c rename to ImageMagick-7.1.1-44/coders/art.c diff --git a/ImageMagick-7.1.1-43/coders/art.h b/ImageMagick-7.1.1-44/coders/art.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/art.h rename to ImageMagick-7.1.1-44/coders/art.h diff --git a/ImageMagick-7.1.1-43/coders/ashlar.c b/ImageMagick-7.1.1-44/coders/ashlar.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ashlar.c rename to ImageMagick-7.1.1-44/coders/ashlar.c diff --git a/ImageMagick-7.1.1-43/coders/ashlar.h b/ImageMagick-7.1.1-44/coders/ashlar.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ashlar.h rename to ImageMagick-7.1.1-44/coders/ashlar.h diff --git a/ImageMagick-7.1.1-43/coders/avs.c b/ImageMagick-7.1.1-44/coders/avs.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/avs.c rename to ImageMagick-7.1.1-44/coders/avs.c diff --git a/ImageMagick-7.1.1-43/coders/avs.h b/ImageMagick-7.1.1-44/coders/avs.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/avs.h rename to ImageMagick-7.1.1-44/coders/avs.h diff --git a/ImageMagick-7.1.1-43/coders/bayer.c b/ImageMagick-7.1.1-44/coders/bayer.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/bayer.c rename to ImageMagick-7.1.1-44/coders/bayer.c diff --git a/ImageMagick-7.1.1-43/coders/bayer.h b/ImageMagick-7.1.1-44/coders/bayer.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/bayer.h rename to ImageMagick-7.1.1-44/coders/bayer.h diff --git a/ImageMagick-7.1.1-43/coders/bgr.c b/ImageMagick-7.1.1-44/coders/bgr.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/bgr.c rename to ImageMagick-7.1.1-44/coders/bgr.c diff --git a/ImageMagick-7.1.1-43/coders/bgr.h b/ImageMagick-7.1.1-44/coders/bgr.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/bgr.h rename to ImageMagick-7.1.1-44/coders/bgr.h diff --git a/ImageMagick-7.1.1-43/coders/bmp.c b/ImageMagick-7.1.1-44/coders/bmp.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/bmp.c rename to ImageMagick-7.1.1-44/coders/bmp.c index d4f58b8ea..954139c38 100644 --- a/ImageMagick-7.1.1-43/coders/bmp.c +++ b/ImageMagick-7.1.1-44/coders/bmp.c @@ -2333,20 +2333,10 @@ static MagickBooleanType WriteBMPImage(const ImageInfo *image_info,Image *image, q=pixels+((ssize_t) image->rows-y-1)*(ssize_t) bytes_per_line; for (x=0; x < (ssize_t) image->columns; x++) { - Quantum alpha=GetPixelAlpha(image,p); - if ((type == 3) && alpha == TransparentAlpha) - { - *q++=255; - *q++=255; - *q++=255; - } - else - { - *q++=ScaleQuantumToChar(GetPixelBlue(image,p)); - *q++=ScaleQuantumToChar(GetPixelGreen(image,p)); - *q++=ScaleQuantumToChar(GetPixelRed(image,p)); - } - *q++=ScaleQuantumToChar(alpha); + *q++=ScaleQuantumToChar(GetPixelBlue(image,p)); + *q++=ScaleQuantumToChar(GetPixelGreen(image,p)); + *q++=ScaleQuantumToChar(GetPixelRed(image,p)); + *q++=ScaleQuantumToChar(GetPixelAlpha(image,p)); p+=(ptrdiff_t) GetPixelChannels(image); } if (image->previous == (Image *) NULL) diff --git a/ImageMagick-7.1.1-43/coders/bmp.h b/ImageMagick-7.1.1-44/coders/bmp.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/bmp.h rename to ImageMagick-7.1.1-44/coders/bmp.h diff --git a/ImageMagick-7.1.1-43/coders/braille.c b/ImageMagick-7.1.1-44/coders/braille.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/braille.c rename to ImageMagick-7.1.1-44/coders/braille.c diff --git a/ImageMagick-7.1.1-43/coders/braille.h b/ImageMagick-7.1.1-44/coders/braille.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/braille.h rename to ImageMagick-7.1.1-44/coders/braille.h diff --git a/ImageMagick-7.1.1-43/coders/bytebuffer-private.h b/ImageMagick-7.1.1-44/coders/bytebuffer-private.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/bytebuffer-private.h rename to ImageMagick-7.1.1-44/coders/bytebuffer-private.h diff --git a/ImageMagick-7.1.1-43/coders/cals.c b/ImageMagick-7.1.1-44/coders/cals.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/cals.c rename to ImageMagick-7.1.1-44/coders/cals.c diff --git a/ImageMagick-7.1.1-43/coders/cals.h b/ImageMagick-7.1.1-44/coders/cals.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/cals.h rename to ImageMagick-7.1.1-44/coders/cals.h diff --git a/ImageMagick-7.1.1-43/coders/caption.c b/ImageMagick-7.1.1-44/coders/caption.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/caption.c rename to ImageMagick-7.1.1-44/coders/caption.c diff --git a/ImageMagick-7.1.1-43/coders/caption.h b/ImageMagick-7.1.1-44/coders/caption.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/caption.h rename to ImageMagick-7.1.1-44/coders/caption.h diff --git a/ImageMagick-7.1.1-43/coders/cin.c b/ImageMagick-7.1.1-44/coders/cin.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/cin.c rename to ImageMagick-7.1.1-44/coders/cin.c diff --git a/ImageMagick-7.1.1-43/coders/cin.h b/ImageMagick-7.1.1-44/coders/cin.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/cin.h rename to ImageMagick-7.1.1-44/coders/cin.h diff --git a/ImageMagick-7.1.1-43/coders/cip.c b/ImageMagick-7.1.1-44/coders/cip.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/cip.c rename to ImageMagick-7.1.1-44/coders/cip.c diff --git a/ImageMagick-7.1.1-43/coders/cip.h b/ImageMagick-7.1.1-44/coders/cip.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/cip.h rename to ImageMagick-7.1.1-44/coders/cip.h diff --git a/ImageMagick-7.1.1-43/coders/clip.c b/ImageMagick-7.1.1-44/coders/clip.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/clip.c rename to ImageMagick-7.1.1-44/coders/clip.c diff --git a/ImageMagick-7.1.1-43/coders/clip.h b/ImageMagick-7.1.1-44/coders/clip.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/clip.h rename to ImageMagick-7.1.1-44/coders/clip.h diff --git a/ImageMagick-7.1.1-43/coders/clipboard.c b/ImageMagick-7.1.1-44/coders/clipboard.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/clipboard.c rename to ImageMagick-7.1.1-44/coders/clipboard.c diff --git a/ImageMagick-7.1.1-43/coders/clipboard.h b/ImageMagick-7.1.1-44/coders/clipboard.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/clipboard.h rename to ImageMagick-7.1.1-44/coders/clipboard.h diff --git a/ImageMagick-7.1.1-43/coders/cmyk.c b/ImageMagick-7.1.1-44/coders/cmyk.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/cmyk.c rename to ImageMagick-7.1.1-44/coders/cmyk.c diff --git a/ImageMagick-7.1.1-43/coders/cmyk.h b/ImageMagick-7.1.1-44/coders/cmyk.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/cmyk.h rename to ImageMagick-7.1.1-44/coders/cmyk.h diff --git a/ImageMagick-7.1.1-43/coders/coders-list.h b/ImageMagick-7.1.1-44/coders/coders-list.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/coders-list.h rename to ImageMagick-7.1.1-44/coders/coders-list.h diff --git a/ImageMagick-7.1.1-43/coders/coders-private.h b/ImageMagick-7.1.1-44/coders/coders-private.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/coders-private.h rename to ImageMagick-7.1.1-44/coders/coders-private.h diff --git a/ImageMagick-7.1.1-43/coders/coders.h b/ImageMagick-7.1.1-44/coders/coders.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/coders.h rename to ImageMagick-7.1.1-44/coders/coders.h diff --git a/ImageMagick-7.1.1-43/coders/cube.c b/ImageMagick-7.1.1-44/coders/cube.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/cube.c rename to ImageMagick-7.1.1-44/coders/cube.c diff --git a/ImageMagick-7.1.1-43/coders/cube.h b/ImageMagick-7.1.1-44/coders/cube.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/cube.h rename to ImageMagick-7.1.1-44/coders/cube.h diff --git a/ImageMagick-7.1.1-43/coders/cut.c b/ImageMagick-7.1.1-44/coders/cut.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/cut.c rename to ImageMagick-7.1.1-44/coders/cut.c diff --git a/ImageMagick-7.1.1-43/coders/cut.h b/ImageMagick-7.1.1-44/coders/cut.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/cut.h rename to ImageMagick-7.1.1-44/coders/cut.h diff --git a/ImageMagick-7.1.1-43/coders/dcm.c b/ImageMagick-7.1.1-44/coders/dcm.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/dcm.c rename to ImageMagick-7.1.1-44/coders/dcm.c diff --git a/ImageMagick-7.1.1-43/coders/dcm.h b/ImageMagick-7.1.1-44/coders/dcm.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/dcm.h rename to ImageMagick-7.1.1-44/coders/dcm.h diff --git a/ImageMagick-7.1.1-43/coders/dds.c b/ImageMagick-7.1.1-44/coders/dds.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/dds.c rename to ImageMagick-7.1.1-44/coders/dds.c diff --git a/ImageMagick-7.1.1-43/coders/dds.h b/ImageMagick-7.1.1-44/coders/dds.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/dds.h rename to ImageMagick-7.1.1-44/coders/dds.h diff --git a/ImageMagick-7.1.1-43/coders/debug.c b/ImageMagick-7.1.1-44/coders/debug.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/debug.c rename to ImageMagick-7.1.1-44/coders/debug.c diff --git a/ImageMagick-7.1.1-43/coders/debug.h b/ImageMagick-7.1.1-44/coders/debug.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/debug.h rename to ImageMagick-7.1.1-44/coders/debug.h diff --git a/ImageMagick-7.1.1-43/coders/dib.c b/ImageMagick-7.1.1-44/coders/dib.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/dib.c rename to ImageMagick-7.1.1-44/coders/dib.c diff --git a/ImageMagick-7.1.1-43/coders/dib.h b/ImageMagick-7.1.1-44/coders/dib.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/dib.h rename to ImageMagick-7.1.1-44/coders/dib.h diff --git a/ImageMagick-7.1.1-43/coders/djvu.c b/ImageMagick-7.1.1-44/coders/djvu.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/djvu.c rename to ImageMagick-7.1.1-44/coders/djvu.c diff --git a/ImageMagick-7.1.1-43/coders/djvu.h b/ImageMagick-7.1.1-44/coders/djvu.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/djvu.h rename to ImageMagick-7.1.1-44/coders/djvu.h diff --git a/ImageMagick-7.1.1-43/coders/dmr.c b/ImageMagick-7.1.1-44/coders/dmr.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/dmr.c rename to ImageMagick-7.1.1-44/coders/dmr.c diff --git a/ImageMagick-7.1.1-43/coders/dmr.h b/ImageMagick-7.1.1-44/coders/dmr.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/dmr.h rename to ImageMagick-7.1.1-44/coders/dmr.h diff --git a/ImageMagick-7.1.1-43/coders/dng.c b/ImageMagick-7.1.1-44/coders/dng.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/dng.c rename to ImageMagick-7.1.1-44/coders/dng.c diff --git a/ImageMagick-7.1.1-43/coders/dng.h b/ImageMagick-7.1.1-44/coders/dng.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/dng.h rename to ImageMagick-7.1.1-44/coders/dng.h diff --git a/ImageMagick-7.1.1-43/coders/dot.c b/ImageMagick-7.1.1-44/coders/dot.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/dot.c rename to ImageMagick-7.1.1-44/coders/dot.c diff --git a/ImageMagick-7.1.1-43/coders/dot.h b/ImageMagick-7.1.1-44/coders/dot.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/dot.h rename to ImageMagick-7.1.1-44/coders/dot.h diff --git a/ImageMagick-7.1.1-43/coders/dps.c b/ImageMagick-7.1.1-44/coders/dps.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/dps.c rename to ImageMagick-7.1.1-44/coders/dps.c diff --git a/ImageMagick-7.1.1-43/coders/dps.h b/ImageMagick-7.1.1-44/coders/dps.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/dps.h rename to ImageMagick-7.1.1-44/coders/dps.h diff --git a/ImageMagick-7.1.1-43/coders/dpx.c b/ImageMagick-7.1.1-44/coders/dpx.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/dpx.c rename to ImageMagick-7.1.1-44/coders/dpx.c diff --git a/ImageMagick-7.1.1-43/coders/dpx.h b/ImageMagick-7.1.1-44/coders/dpx.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/dpx.h rename to ImageMagick-7.1.1-44/coders/dpx.h diff --git a/ImageMagick-7.1.1-43/coders/emf.c b/ImageMagick-7.1.1-44/coders/emf.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/emf.c rename to ImageMagick-7.1.1-44/coders/emf.c diff --git a/ImageMagick-7.1.1-43/coders/emf.h b/ImageMagick-7.1.1-44/coders/emf.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/emf.h rename to ImageMagick-7.1.1-44/coders/emf.h diff --git a/ImageMagick-7.1.1-43/coders/ept.c b/ImageMagick-7.1.1-44/coders/ept.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ept.c rename to ImageMagick-7.1.1-44/coders/ept.c diff --git a/ImageMagick-7.1.1-43/coders/ept.h b/ImageMagick-7.1.1-44/coders/ept.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ept.h rename to ImageMagick-7.1.1-44/coders/ept.h diff --git a/ImageMagick-7.1.1-43/coders/exr.c b/ImageMagick-7.1.1-44/coders/exr.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/exr.c rename to ImageMagick-7.1.1-44/coders/exr.c index eae2c822f..10fa3639e 100644 --- a/ImageMagick-7.1.1-43/coders/exr.c +++ b/ImageMagick-7.1.1-44/coders/exr.c @@ -204,12 +204,10 @@ static MagickBooleanType InitializeEXRChannels(Image *image,exr_context_t ctxt, uint8_t *p; + *data=(uint8_t *) NULL; if (decoder.channel_count >= (MaxPixelChannels-MetaPixelChannels)) - { - exr_decoding_destroy(ctxt,&decoder); ThrowBinaryException(CorruptImageError,"MaximumChannelsExceeded", image->filename); - } channel=decoder.channels; prefix_length=0; prefix=strrchr(decoder.channels[0].channel_name,'.'); @@ -281,10 +279,7 @@ static MagickBooleanType InitializeEXRChannels(Image *image,exr_context_t ctxt, if ((status != MagickFalse) && (number_meta_channels > 0)) status=SetPixelMetaChannels(image,number_meta_channels,exception); if (status == MagickFalse) - { - exr_decoding_destroy(ctxt,&decoder); - return(status); - } + return(status); *data=(uint8_t *) AcquireQuantumMemory(*pixel_size,pixel_count); if (*data == (uint8_t*)NULL) { @@ -491,6 +486,7 @@ static MagickBooleanType ReadEXRTiledImage(exr_context_t ctxt,int part_index, (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"Unsupported number of levels","`%d %d'", levels_x,levels_y); + return(MagickFalse); } pixel_count=(size_t)tile_width*tile_height; status=InitializeEXRChannels(image,ctxt,decoder,pixel_count,tile_width, diff --git a/ImageMagick-7.1.1-43/coders/exr.h b/ImageMagick-7.1.1-44/coders/exr.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/exr.h rename to ImageMagick-7.1.1-44/coders/exr.h diff --git a/ImageMagick-7.1.1-43/coders/farbfeld.c b/ImageMagick-7.1.1-44/coders/farbfeld.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/farbfeld.c rename to ImageMagick-7.1.1-44/coders/farbfeld.c diff --git a/ImageMagick-7.1.1-43/coders/farbfeld.h b/ImageMagick-7.1.1-44/coders/farbfeld.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/farbfeld.h rename to ImageMagick-7.1.1-44/coders/farbfeld.h diff --git a/ImageMagick-7.1.1-43/coders/fax.c b/ImageMagick-7.1.1-44/coders/fax.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/fax.c rename to ImageMagick-7.1.1-44/coders/fax.c diff --git a/ImageMagick-7.1.1-43/coders/fax.h b/ImageMagick-7.1.1-44/coders/fax.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/fax.h rename to ImageMagick-7.1.1-44/coders/fax.h diff --git a/ImageMagick-7.1.1-43/coders/fits.c b/ImageMagick-7.1.1-44/coders/fits.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/fits.c rename to ImageMagick-7.1.1-44/coders/fits.c index 8215b0be3..0a8068ddc 100644 --- a/ImageMagick-7.1.1-43/coders/fits.c +++ b/ImageMagick-7.1.1-44/coders/fits.c @@ -187,8 +187,8 @@ static MagickOffsetType GetFITSPixelExtrema(Image *image, if (offset == -1) return(-1); number_pixels=(MagickSizeType) image->columns*image->rows; - *minima=DBL_MAX; - *maxima=DBL_MIN; + *minima=MagickMaximumValue; + *maxima=MagickMinimumValue; for (i=0; i < (MagickOffsetType) number_pixels; i++) { pixel=GetFITSPixel(image,bits_per_pixel); diff --git a/ImageMagick-7.1.1-43/coders/fits.h b/ImageMagick-7.1.1-44/coders/fits.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/fits.h rename to ImageMagick-7.1.1-44/coders/fits.h diff --git a/ImageMagick-7.1.1-43/coders/fl32.c b/ImageMagick-7.1.1-44/coders/fl32.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/fl32.c rename to ImageMagick-7.1.1-44/coders/fl32.c diff --git a/ImageMagick-7.1.1-43/coders/fl32.h b/ImageMagick-7.1.1-44/coders/fl32.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/fl32.h rename to ImageMagick-7.1.1-44/coders/fl32.h diff --git a/ImageMagick-7.1.1-43/coders/flif.c b/ImageMagick-7.1.1-44/coders/flif.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/flif.c rename to ImageMagick-7.1.1-44/coders/flif.c diff --git a/ImageMagick-7.1.1-43/coders/flif.h b/ImageMagick-7.1.1-44/coders/flif.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/flif.h rename to ImageMagick-7.1.1-44/coders/flif.h diff --git a/ImageMagick-7.1.1-43/coders/fpx.c b/ImageMagick-7.1.1-44/coders/fpx.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/fpx.c rename to ImageMagick-7.1.1-44/coders/fpx.c diff --git a/ImageMagick-7.1.1-43/coders/fpx.h b/ImageMagick-7.1.1-44/coders/fpx.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/fpx.h rename to ImageMagick-7.1.1-44/coders/fpx.h diff --git a/ImageMagick-7.1.1-43/coders/ftxt.c b/ImageMagick-7.1.1-44/coders/ftxt.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ftxt.c rename to ImageMagick-7.1.1-44/coders/ftxt.c diff --git a/ImageMagick-7.1.1-43/coders/ftxt.h b/ImageMagick-7.1.1-44/coders/ftxt.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ftxt.h rename to ImageMagick-7.1.1-44/coders/ftxt.h diff --git a/ImageMagick-7.1.1-43/coders/ghostscript-private.h b/ImageMagick-7.1.1-44/coders/ghostscript-private.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ghostscript-private.h rename to ImageMagick-7.1.1-44/coders/ghostscript-private.h diff --git a/ImageMagick-7.1.1-43/coders/gif.c b/ImageMagick-7.1.1-44/coders/gif.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/gif.c rename to ImageMagick-7.1.1-44/coders/gif.c diff --git a/ImageMagick-7.1.1-43/coders/gif.h b/ImageMagick-7.1.1-44/coders/gif.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/gif.h rename to ImageMagick-7.1.1-44/coders/gif.h diff --git a/ImageMagick-7.1.1-43/coders/gradient.c b/ImageMagick-7.1.1-44/coders/gradient.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/gradient.c rename to ImageMagick-7.1.1-44/coders/gradient.c diff --git a/ImageMagick-7.1.1-43/coders/gradient.h b/ImageMagick-7.1.1-44/coders/gradient.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/gradient.h rename to ImageMagick-7.1.1-44/coders/gradient.h diff --git a/ImageMagick-7.1.1-43/coders/gray.c b/ImageMagick-7.1.1-44/coders/gray.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/gray.c rename to ImageMagick-7.1.1-44/coders/gray.c diff --git a/ImageMagick-7.1.1-43/coders/gray.h b/ImageMagick-7.1.1-44/coders/gray.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/gray.h rename to ImageMagick-7.1.1-44/coders/gray.h diff --git a/ImageMagick-7.1.1-43/coders/hald.c b/ImageMagick-7.1.1-44/coders/hald.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/hald.c rename to ImageMagick-7.1.1-44/coders/hald.c diff --git a/ImageMagick-7.1.1-43/coders/hald.h b/ImageMagick-7.1.1-44/coders/hald.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/hald.h rename to ImageMagick-7.1.1-44/coders/hald.h diff --git a/ImageMagick-7.1.1-43/coders/hdr.c b/ImageMagick-7.1.1-44/coders/hdr.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/hdr.c rename to ImageMagick-7.1.1-44/coders/hdr.c diff --git a/ImageMagick-7.1.1-43/coders/hdr.h b/ImageMagick-7.1.1-44/coders/hdr.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/hdr.h rename to ImageMagick-7.1.1-44/coders/hdr.h diff --git a/ImageMagick-7.1.1-43/coders/heic.c b/ImageMagick-7.1.1-44/coders/heic.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/heic.c rename to ImageMagick-7.1.1-44/coders/heic.c index df14c9b68..1e3b785e8 100644 --- a/ImageMagick-7.1.1-43/coders/heic.c +++ b/ImageMagick-7.1.1-44/coders/heic.c @@ -675,8 +675,10 @@ static Image *ReadHEICImage(const ImageInfo *image_info, ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); max_size=(int) MagickMin(MagickMin(GetMagickResourceLimit(WidthResource), GetMagickResourceLimit(HeightResource)),INT_MAX); +#if LIBHEIF_NUMERIC_VERSION >= HEIC_COMPUTE_NUMERIC_VERSION(1,19,0) if (max_size != INT_MAX) heif_context_set_maximum_image_size_limit(heif_context,max_size); +#endif error=heif_context_read_from_file(heif_context,image->filename, (const struct heif_reading_options *) NULL); if (IsHEIFSuccess(image,&error,exception) == MagickFalse) diff --git a/ImageMagick-7.1.1-43/coders/heic.h b/ImageMagick-7.1.1-44/coders/heic.h similarity index 85% rename from ImageMagick-7.1.1-43/coders/heic.h rename to ImageMagick-7.1.1-44/coders/heic.h index 5d6855739..dc17373f1 100644 --- a/ImageMagick-7.1.1-43/coders/heic.h +++ b/ImageMagick-7.1.1-44/coders/heic.h @@ -22,6 +22,11 @@ MagickCoderHeader("AVIF", 4, "ftypavis") \ MagickCoderHeader("HEIC", 4, "ftypheic") \ MagickCoderHeader("HEIC", 4, "ftypheix") \ + MagickCoderHeader("HEIC", 4, "ftyphevc") \ + MagickCoderHeader("HEIC", 4, "ftypheim") \ + MagickCoderHeader("HEIC", 4, "ftypheis") \ + MagickCoderHeader("HEIC", 4, "ftyphevm") \ + MagickCoderHeader("HEIC", 4, "ftyphevs") \ MagickCoderHeader("HEIC", 4, "ftypmif1") \ MagickCoderHeader("HEIC", 4, "ftypmsf1") diff --git a/ImageMagick-7.1.1-43/coders/histogram.c b/ImageMagick-7.1.1-44/coders/histogram.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/histogram.c rename to ImageMagick-7.1.1-44/coders/histogram.c diff --git a/ImageMagick-7.1.1-43/coders/histogram.h b/ImageMagick-7.1.1-44/coders/histogram.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/histogram.h rename to ImageMagick-7.1.1-44/coders/histogram.h diff --git a/ImageMagick-7.1.1-43/coders/hrz.c b/ImageMagick-7.1.1-44/coders/hrz.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/hrz.c rename to ImageMagick-7.1.1-44/coders/hrz.c diff --git a/ImageMagick-7.1.1-43/coders/hrz.h b/ImageMagick-7.1.1-44/coders/hrz.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/hrz.h rename to ImageMagick-7.1.1-44/coders/hrz.h diff --git a/ImageMagick-7.1.1-43/coders/html.c b/ImageMagick-7.1.1-44/coders/html.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/html.c rename to ImageMagick-7.1.1-44/coders/html.c diff --git a/ImageMagick-7.1.1-43/coders/html.h b/ImageMagick-7.1.1-44/coders/html.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/html.h rename to ImageMagick-7.1.1-44/coders/html.h diff --git a/ImageMagick-7.1.1-43/coders/icon.c b/ImageMagick-7.1.1-44/coders/icon.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/icon.c rename to ImageMagick-7.1.1-44/coders/icon.c index c4c4729d6..9ca1ad614 100644 --- a/ImageMagick-7.1.1-43/coders/icon.c +++ b/ImageMagick-7.1.1-44/coders/icon.c @@ -1413,7 +1413,7 @@ static MagickBooleanType WriteICONImage(const ImageInfo *image_info, *q++=ScaleQuantumToChar(next->colormap[i].blue); *q++=ScaleQuantumToChar(next->colormap[i].green); *q++=ScaleQuantumToChar(next->colormap[i].red); - *q++=(unsigned char) 0x0; + *q++=(unsigned char) 0x00; } for ( ; i < (ssize_t) 1UL << bits_per_pixel; i++) { diff --git a/ImageMagick-7.1.1-43/coders/icon.h b/ImageMagick-7.1.1-44/coders/icon.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/icon.h rename to ImageMagick-7.1.1-44/coders/icon.h diff --git a/ImageMagick-7.1.1-43/coders/info.c b/ImageMagick-7.1.1-44/coders/info.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/info.c rename to ImageMagick-7.1.1-44/coders/info.c diff --git a/ImageMagick-7.1.1-43/coders/info.h b/ImageMagick-7.1.1-44/coders/info.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/info.h rename to ImageMagick-7.1.1-44/coders/info.h diff --git a/ImageMagick-7.1.1-43/coders/inline.c b/ImageMagick-7.1.1-44/coders/inline.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/inline.c rename to ImageMagick-7.1.1-44/coders/inline.c diff --git a/ImageMagick-7.1.1-43/coders/inline.h b/ImageMagick-7.1.1-44/coders/inline.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/inline.h rename to ImageMagick-7.1.1-44/coders/inline.h diff --git a/ImageMagick-7.1.1-43/coders/ipl.c b/ImageMagick-7.1.1-44/coders/ipl.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ipl.c rename to ImageMagick-7.1.1-44/coders/ipl.c diff --git a/ImageMagick-7.1.1-43/coders/ipl.h b/ImageMagick-7.1.1-44/coders/ipl.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ipl.h rename to ImageMagick-7.1.1-44/coders/ipl.h diff --git a/ImageMagick-7.1.1-43/coders/jbig.c b/ImageMagick-7.1.1-44/coders/jbig.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/jbig.c rename to ImageMagick-7.1.1-44/coders/jbig.c diff --git a/ImageMagick-7.1.1-43/coders/jbig.h b/ImageMagick-7.1.1-44/coders/jbig.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/jbig.h rename to ImageMagick-7.1.1-44/coders/jbig.h diff --git a/ImageMagick-7.1.1-43/coders/jnx.c b/ImageMagick-7.1.1-44/coders/jnx.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/jnx.c rename to ImageMagick-7.1.1-44/coders/jnx.c diff --git a/ImageMagick-7.1.1-43/coders/jnx.h b/ImageMagick-7.1.1-44/coders/jnx.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/jnx.h rename to ImageMagick-7.1.1-44/coders/jnx.h diff --git a/ImageMagick-7.1.1-43/coders/jp2.c b/ImageMagick-7.1.1-44/coders/jp2.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/jp2.c rename to ImageMagick-7.1.1-44/coders/jp2.c diff --git a/ImageMagick-7.1.1-43/coders/jp2.h b/ImageMagick-7.1.1-44/coders/jp2.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/jp2.h rename to ImageMagick-7.1.1-44/coders/jp2.h diff --git a/ImageMagick-7.1.1-43/coders/jpeg.c b/ImageMagick-7.1.1-44/coders/jpeg.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/jpeg.c rename to ImageMagick-7.1.1-44/coders/jpeg.c diff --git a/ImageMagick-7.1.1-43/coders/jpeg.h b/ImageMagick-7.1.1-44/coders/jpeg.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/jpeg.h rename to ImageMagick-7.1.1-44/coders/jpeg.h diff --git a/ImageMagick-7.1.1-43/coders/json.c b/ImageMagick-7.1.1-44/coders/json.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/json.c rename to ImageMagick-7.1.1-44/coders/json.c diff --git a/ImageMagick-7.1.1-43/coders/json.h b/ImageMagick-7.1.1-44/coders/json.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/json.h rename to ImageMagick-7.1.1-44/coders/json.h diff --git a/ImageMagick-7.1.1-43/coders/jxl.c b/ImageMagick-7.1.1-44/coders/jxl.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/jxl.c rename to ImageMagick-7.1.1-44/coders/jxl.c diff --git a/ImageMagick-7.1.1-43/coders/jxl.h b/ImageMagick-7.1.1-44/coders/jxl.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/jxl.h rename to ImageMagick-7.1.1-44/coders/jxl.h diff --git a/ImageMagick-7.1.1-43/coders/kernel.c b/ImageMagick-7.1.1-44/coders/kernel.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/kernel.c rename to ImageMagick-7.1.1-44/coders/kernel.c diff --git a/ImageMagick-7.1.1-43/coders/kernel.h b/ImageMagick-7.1.1-44/coders/kernel.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/kernel.h rename to ImageMagick-7.1.1-44/coders/kernel.h diff --git a/ImageMagick-7.1.1-43/coders/label.c b/ImageMagick-7.1.1-44/coders/label.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/label.c rename to ImageMagick-7.1.1-44/coders/label.c diff --git a/ImageMagick-7.1.1-43/coders/label.h b/ImageMagick-7.1.1-44/coders/label.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/label.h rename to ImageMagick-7.1.1-44/coders/label.h diff --git a/ImageMagick-7.1.1-43/coders/mac.c b/ImageMagick-7.1.1-44/coders/mac.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/mac.c rename to ImageMagick-7.1.1-44/coders/mac.c diff --git a/ImageMagick-7.1.1-43/coders/mac.h b/ImageMagick-7.1.1-44/coders/mac.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/mac.h rename to ImageMagick-7.1.1-44/coders/mac.h diff --git a/ImageMagick-7.1.1-43/coders/magick.c b/ImageMagick-7.1.1-44/coders/magick.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/magick.c rename to ImageMagick-7.1.1-44/coders/magick.c diff --git a/ImageMagick-7.1.1-43/coders/magick.h b/ImageMagick-7.1.1-44/coders/magick.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/magick.h rename to ImageMagick-7.1.1-44/coders/magick.h diff --git a/ImageMagick-7.1.1-43/coders/map.c b/ImageMagick-7.1.1-44/coders/map.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/map.c rename to ImageMagick-7.1.1-44/coders/map.c diff --git a/ImageMagick-7.1.1-43/coders/map.h b/ImageMagick-7.1.1-44/coders/map.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/map.h rename to ImageMagick-7.1.1-44/coders/map.h diff --git a/ImageMagick-7.1.1-43/coders/mask.c b/ImageMagick-7.1.1-44/coders/mask.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/mask.c rename to ImageMagick-7.1.1-44/coders/mask.c diff --git a/ImageMagick-7.1.1-43/coders/mask.h b/ImageMagick-7.1.1-44/coders/mask.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/mask.h rename to ImageMagick-7.1.1-44/coders/mask.h diff --git a/ImageMagick-7.1.1-43/coders/mat.c b/ImageMagick-7.1.1-44/coders/mat.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/mat.c rename to ImageMagick-7.1.1-44/coders/mat.c diff --git a/ImageMagick-7.1.1-43/coders/mat.h b/ImageMagick-7.1.1-44/coders/mat.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/mat.h rename to ImageMagick-7.1.1-44/coders/mat.h diff --git a/ImageMagick-7.1.1-43/coders/matte.c b/ImageMagick-7.1.1-44/coders/matte.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/matte.c rename to ImageMagick-7.1.1-44/coders/matte.c diff --git a/ImageMagick-7.1.1-43/coders/matte.h b/ImageMagick-7.1.1-44/coders/matte.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/matte.h rename to ImageMagick-7.1.1-44/coders/matte.h diff --git a/ImageMagick-7.1.1-43/coders/meta.c b/ImageMagick-7.1.1-44/coders/meta.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/meta.c rename to ImageMagick-7.1.1-44/coders/meta.c diff --git a/ImageMagick-7.1.1-43/coders/meta.h b/ImageMagick-7.1.1-44/coders/meta.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/meta.h rename to ImageMagick-7.1.1-44/coders/meta.h diff --git a/ImageMagick-7.1.1-43/coders/miff.c b/ImageMagick-7.1.1-44/coders/miff.c similarity index 98% rename from ImageMagick-7.1.1-43/coders/miff.c rename to ImageMagick-7.1.1-44/coders/miff.c index 355455bc5..77e925006 100644 --- a/ImageMagick-7.1.1-43/coders/miff.c +++ b/ImageMagick-7.1.1-44/coders/miff.c @@ -1335,22 +1335,26 @@ static Image *ReadMIFFImage(const ImageInfo *image_info, if (quantum_format != UndefinedQuantumFormat) { status=SetQuantumFormat(image,quantum_info,quantum_format); + image->depth=quantum_info->depth; if (status == MagickFalse) ThrowMIFFException(ResourceLimitError,"MemoryAllocationFailed"); } - packet_size=(size_t) (image->depth/8); - if (image->storage_class == DirectClass) - packet_size=(size_t) (3*image->depth/8); - if (IsGrayColorspace(image->colorspace) != MagickFalse) - packet_size=image->depth/8; - if (image->alpha_trait != UndefinedPixelTrait) - packet_size+=image->depth/8; - if (image->colorspace == CMYKColorspace) - packet_size+=image->depth/8; - if (image->compression == RLECompression) - packet_size++; if (image->number_meta_channels != 0) - packet_size+=image->number_meta_channels*image->depth/8; + packet_size=GetImageChannels(image)*image->depth/8; + else + { + packet_size=(size_t) (image->depth/8); + if (image->storage_class == DirectClass) + packet_size=(size_t) (3*image->depth/8); + if (IsGrayColorspace(image->colorspace) != MagickFalse) + packet_size=image->depth/8; + if (image->alpha_trait != UndefinedPixelTrait) + packet_size+=image->depth/8; + if (image->colorspace == CMYKColorspace) + packet_size+=image->depth/8; + if (image->compression == RLECompression) + packet_size++; + } compress_extent=MagickMax(MagickMax(BZipMaxExtent(packet_size* image->columns),LZMAMaxExtent(packet_size*image->columns)), ZipMaxExtent(packet_size*image->columns)); @@ -2159,19 +2163,22 @@ static MagickBooleanType WriteMIFFImage(const ImageInfo *image_info, default: break; } - packet_size=(size_t) (image->depth/8); - if (image->storage_class == DirectClass) - packet_size=(size_t) (3*image->depth/8); - if (IsGrayColorspace(image->colorspace) != MagickFalse) - packet_size=(size_t) (image->depth/8); - if (image->alpha_trait != UndefinedPixelTrait) - packet_size+=image->depth/8; - if (image->colorspace == CMYKColorspace) - packet_size+=image->depth/8; - if (compression == RLECompression) - packet_size++; if (image->number_meta_channels != 0) - packet_size+=image->number_meta_channels*image->depth/8; + packet_size=GetImageChannels(image)*image->depth/8; + else + { + packet_size=(size_t) (image->depth/8); + if (image->storage_class == DirectClass) + packet_size=(size_t) (3*image->depth/8); + if (IsGrayColorspace(image->colorspace) != MagickFalse) + packet_size=(size_t) (image->depth/8); + if (image->alpha_trait != UndefinedPixelTrait) + packet_size+=image->depth/8; + if (image->colorspace == CMYKColorspace) + packet_size+=image->depth/8; + if (compression == RLECompression) + packet_size++; + } length=MagickMax(BZipMaxExtent(packet_size*image->columns),ZipMaxExtent( packet_size*image->columns)); if ((compression == BZipCompression) || (compression == ZipCompression)) diff --git a/ImageMagick-7.1.1-43/coders/miff.h b/ImageMagick-7.1.1-44/coders/miff.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/miff.h rename to ImageMagick-7.1.1-44/coders/miff.h diff --git a/ImageMagick-7.1.1-43/coders/mono.c b/ImageMagick-7.1.1-44/coders/mono.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/mono.c rename to ImageMagick-7.1.1-44/coders/mono.c diff --git a/ImageMagick-7.1.1-43/coders/mono.h b/ImageMagick-7.1.1-44/coders/mono.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/mono.h rename to ImageMagick-7.1.1-44/coders/mono.h diff --git a/ImageMagick-7.1.1-43/coders/mpc.c b/ImageMagick-7.1.1-44/coders/mpc.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/mpc.c rename to ImageMagick-7.1.1-44/coders/mpc.c diff --git a/ImageMagick-7.1.1-43/coders/mpc.h b/ImageMagick-7.1.1-44/coders/mpc.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/mpc.h rename to ImageMagick-7.1.1-44/coders/mpc.h diff --git a/ImageMagick-7.1.1-43/coders/mpr.c b/ImageMagick-7.1.1-44/coders/mpr.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/mpr.c rename to ImageMagick-7.1.1-44/coders/mpr.c diff --git a/ImageMagick-7.1.1-43/coders/mpr.h b/ImageMagick-7.1.1-44/coders/mpr.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/mpr.h rename to ImageMagick-7.1.1-44/coders/mpr.h diff --git a/ImageMagick-7.1.1-43/coders/msl.c b/ImageMagick-7.1.1-44/coders/msl.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/msl.c rename to ImageMagick-7.1.1-44/coders/msl.c index d6f069bfa..dc7a8bfd8 100644 --- a/ImageMagick-7.1.1-43/coders/msl.c +++ b/ImageMagick-7.1.1-44/coders/msl.c @@ -7385,8 +7385,9 @@ static MagickBooleanType ProcessMSLScript(const ImageInfo *image_info, option = GetImageOption(image_info,"msl:parse-huge"); if ((option != (char *) NULL) && (IsStringTrue(option) != MagickFalse)) (void) xmlCtxtUseOptions(parser,XML_PARSE_HUGE); - // Ensure the parser is configured securely to prevent XXE attacks - (void) xmlCtxtUseOptions(parser, XML_PARSE_NOENT | XML_PARSE_NOCDATA | XML_PARSE_NONET); + option=GetImageOption(image_info,"msl:substitute-entities"); + if ((option != (char *) NULL) && (IsStringTrue(option) != MagickFalse)) + (void) xmlCtxtUseOptions(parser,XML_PARSE_NOENT); } while (ReadBlobString(msl_image,message) != (char *) NULL) { diff --git a/ImageMagick-7.1.1-43/coders/msl.h b/ImageMagick-7.1.1-44/coders/msl.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/msl.h rename to ImageMagick-7.1.1-44/coders/msl.h diff --git a/ImageMagick-7.1.1-43/coders/mtv.c b/ImageMagick-7.1.1-44/coders/mtv.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/mtv.c rename to ImageMagick-7.1.1-44/coders/mtv.c diff --git a/ImageMagick-7.1.1-43/coders/mtv.h b/ImageMagick-7.1.1-44/coders/mtv.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/mtv.h rename to ImageMagick-7.1.1-44/coders/mtv.h diff --git a/ImageMagick-7.1.1-43/coders/mvg.c b/ImageMagick-7.1.1-44/coders/mvg.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/mvg.c rename to ImageMagick-7.1.1-44/coders/mvg.c diff --git a/ImageMagick-7.1.1-43/coders/mvg.h b/ImageMagick-7.1.1-44/coders/mvg.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/mvg.h rename to ImageMagick-7.1.1-44/coders/mvg.h diff --git a/ImageMagick-7.1.1-43/coders/null.c b/ImageMagick-7.1.1-44/coders/null.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/null.c rename to ImageMagick-7.1.1-44/coders/null.c diff --git a/ImageMagick-7.1.1-43/coders/null.h b/ImageMagick-7.1.1-44/coders/null.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/null.h rename to ImageMagick-7.1.1-44/coders/null.h diff --git a/ImageMagick-7.1.1-43/coders/ora.c b/ImageMagick-7.1.1-44/coders/ora.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ora.c rename to ImageMagick-7.1.1-44/coders/ora.c diff --git a/ImageMagick-7.1.1-43/coders/ora.h b/ImageMagick-7.1.1-44/coders/ora.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ora.h rename to ImageMagick-7.1.1-44/coders/ora.h diff --git a/ImageMagick-7.1.1-43/coders/otb.c b/ImageMagick-7.1.1-44/coders/otb.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/otb.c rename to ImageMagick-7.1.1-44/coders/otb.c diff --git a/ImageMagick-7.1.1-43/coders/otb.h b/ImageMagick-7.1.1-44/coders/otb.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/otb.h rename to ImageMagick-7.1.1-44/coders/otb.h diff --git a/ImageMagick-7.1.1-43/coders/palm.c b/ImageMagick-7.1.1-44/coders/palm.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/palm.c rename to ImageMagick-7.1.1-44/coders/palm.c diff --git a/ImageMagick-7.1.1-43/coders/palm.h b/ImageMagick-7.1.1-44/coders/palm.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/palm.h rename to ImageMagick-7.1.1-44/coders/palm.h diff --git a/ImageMagick-7.1.1-43/coders/pango.c b/ImageMagick-7.1.1-44/coders/pango.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pango.c rename to ImageMagick-7.1.1-44/coders/pango.c diff --git a/ImageMagick-7.1.1-43/coders/pango.h b/ImageMagick-7.1.1-44/coders/pango.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pango.h rename to ImageMagick-7.1.1-44/coders/pango.h diff --git a/ImageMagick-7.1.1-43/coders/pattern.c b/ImageMagick-7.1.1-44/coders/pattern.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pattern.c rename to ImageMagick-7.1.1-44/coders/pattern.c diff --git a/ImageMagick-7.1.1-43/coders/pattern.h b/ImageMagick-7.1.1-44/coders/pattern.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pattern.h rename to ImageMagick-7.1.1-44/coders/pattern.h diff --git a/ImageMagick-7.1.1-43/coders/pcd.c b/ImageMagick-7.1.1-44/coders/pcd.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pcd.c rename to ImageMagick-7.1.1-44/coders/pcd.c diff --git a/ImageMagick-7.1.1-43/coders/pcd.h b/ImageMagick-7.1.1-44/coders/pcd.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pcd.h rename to ImageMagick-7.1.1-44/coders/pcd.h diff --git a/ImageMagick-7.1.1-43/coders/pcl.c b/ImageMagick-7.1.1-44/coders/pcl.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pcl.c rename to ImageMagick-7.1.1-44/coders/pcl.c diff --git a/ImageMagick-7.1.1-43/coders/pcl.h b/ImageMagick-7.1.1-44/coders/pcl.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pcl.h rename to ImageMagick-7.1.1-44/coders/pcl.h diff --git a/ImageMagick-7.1.1-43/coders/pcx.c b/ImageMagick-7.1.1-44/coders/pcx.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pcx.c rename to ImageMagick-7.1.1-44/coders/pcx.c diff --git a/ImageMagick-7.1.1-43/coders/pcx.h b/ImageMagick-7.1.1-44/coders/pcx.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pcx.h rename to ImageMagick-7.1.1-44/coders/pcx.h diff --git a/ImageMagick-7.1.1-43/coders/pdb.c b/ImageMagick-7.1.1-44/coders/pdb.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pdb.c rename to ImageMagick-7.1.1-44/coders/pdb.c diff --git a/ImageMagick-7.1.1-43/coders/pdb.h b/ImageMagick-7.1.1-44/coders/pdb.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pdb.h rename to ImageMagick-7.1.1-44/coders/pdb.h diff --git a/ImageMagick-7.1.1-43/coders/pdf.c b/ImageMagick-7.1.1-44/coders/pdf.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pdf.c rename to ImageMagick-7.1.1-44/coders/pdf.c diff --git a/ImageMagick-7.1.1-43/coders/pdf.h b/ImageMagick-7.1.1-44/coders/pdf.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pdf.h rename to ImageMagick-7.1.1-44/coders/pdf.h diff --git a/ImageMagick-7.1.1-43/coders/pes.c b/ImageMagick-7.1.1-44/coders/pes.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pes.c rename to ImageMagick-7.1.1-44/coders/pes.c diff --git a/ImageMagick-7.1.1-43/coders/pes.h b/ImageMagick-7.1.1-44/coders/pes.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pes.h rename to ImageMagick-7.1.1-44/coders/pes.h diff --git a/ImageMagick-7.1.1-43/coders/pgx.c b/ImageMagick-7.1.1-44/coders/pgx.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pgx.c rename to ImageMagick-7.1.1-44/coders/pgx.c diff --git a/ImageMagick-7.1.1-43/coders/pgx.h b/ImageMagick-7.1.1-44/coders/pgx.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pgx.h rename to ImageMagick-7.1.1-44/coders/pgx.h diff --git a/ImageMagick-7.1.1-43/coders/pict.c b/ImageMagick-7.1.1-44/coders/pict.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pict.c rename to ImageMagick-7.1.1-44/coders/pict.c diff --git a/ImageMagick-7.1.1-43/coders/pict.h b/ImageMagick-7.1.1-44/coders/pict.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pict.h rename to ImageMagick-7.1.1-44/coders/pict.h diff --git a/ImageMagick-7.1.1-43/coders/pix.c b/ImageMagick-7.1.1-44/coders/pix.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pix.c rename to ImageMagick-7.1.1-44/coders/pix.c diff --git a/ImageMagick-7.1.1-43/coders/pix.h b/ImageMagick-7.1.1-44/coders/pix.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pix.h rename to ImageMagick-7.1.1-44/coders/pix.h diff --git a/ImageMagick-7.1.1-43/coders/plasma.c b/ImageMagick-7.1.1-44/coders/plasma.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/plasma.c rename to ImageMagick-7.1.1-44/coders/plasma.c diff --git a/ImageMagick-7.1.1-43/coders/plasma.h b/ImageMagick-7.1.1-44/coders/plasma.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/plasma.h rename to ImageMagick-7.1.1-44/coders/plasma.h diff --git a/ImageMagick-7.1.1-43/coders/png.c b/ImageMagick-7.1.1-44/coders/png.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/png.c rename to ImageMagick-7.1.1-44/coders/png.c index ad756e8ed..23a96e4d0 100644 --- a/ImageMagick-7.1.1-43/coders/png.c +++ b/ImageMagick-7.1.1-44/coders/png.c @@ -1273,6 +1273,48 @@ static void LogPNGChunk(MagickBooleanType logging, const png_byte *type, extern "C" { #endif +typedef struct _PNGErrorInfo +{ + Image + *image; + + ExceptionInfo + *exception; +} PNGErrorInfo; + +static void MagickPNGError(png_struct *ping,const ExceptionType severity, + png_const_charp message) +{ + ExceptionInfo + *exception; + + Image + *image; + + PNGErrorInfo + *error_info; + + error_info=(PNGErrorInfo *) png_get_error_ptr(ping); + image=error_info->image; + exception=error_info->exception; + + if (image->debug != MagickFalse) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " libpng-%s error: %s", png_get_libpng_ver(NULL),message); + + (void) ThrowMagickException(exception,GetMagickModule(),severity,message, + "`%s'",image->filename); + +#if (PNG_LIBPNG_VER < 10500) + /* A warning about deprecated use of jmpbuf here is unavoidable if you + * are building with libpng-1.4.x and can be ignored. + */ + longjmp(ping->jmpbuf,1); +#else + png_longjmp(ping,1); +#endif +} + /* This the function that does the actual reading of data. It is the same as the one supplied in libpng, except that it receives the @@ -1301,7 +1343,7 @@ static void png_get_data(png_structp png_ptr,png_bytep data,png_size_t length) "Expected %.20g bytes; found %.20g bytes",(double) length, (double) check); png_warning(png_ptr,msg); - png_error(png_ptr,"Read Exception"); + MagickPNGError(png_ptr,CorruptImageError,"UnexpectedEndOfFile"); } } } @@ -1320,7 +1362,7 @@ static void png_put_data(png_structp png_ptr,png_bytep data,png_size_t length) check=(png_size_t) WriteBlob(image,(size_t) length,data); if (check != length) - png_error(png_ptr,"WriteBlob Failed"); + MagickPNGError(png_ptr,BlobError,"UnableToWriteBlob"); } } @@ -1460,45 +1502,9 @@ static MngPair mng_read_pair(MngPair previous_pair,int delta_type, return(pair); } -typedef struct _PNGErrorInfo -{ - Image - *image; - - ExceptionInfo - *exception; -} PNGErrorInfo; - static void MagickPNGErrorHandler(png_struct *ping,png_const_charp message) { - ExceptionInfo - *exception; - - Image - *image; - - PNGErrorInfo - *error_info; - - error_info=(PNGErrorInfo *) png_get_error_ptr(ping); - image=error_info->image; - exception=error_info->exception; - - if (image->debug != MagickFalse) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " libpng-%s error: %s", png_get_libpng_ver(NULL),message); - - (void) ThrowMagickException(exception,GetMagickModule(),CoderError,message, - "`%s'",image->filename); - -#if (PNG_LIBPNG_VER < 10500) - /* A warning about deprecated use of jmpbuf here is unavoidable if you - * are building with libpng-1.4.x and can be ignored. - */ - longjmp(ping->jmpbuf,1); -#else - png_longjmp(ping,1); -#endif + MagickPNGError(ping,CoderError,message); } static void MagickPNGWarningHandler(png_struct *ping,png_const_charp message) diff --git a/ImageMagick-7.1.1-43/coders/png.h b/ImageMagick-7.1.1-44/coders/png.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/png.h rename to ImageMagick-7.1.1-44/coders/png.h diff --git a/ImageMagick-7.1.1-43/coders/pnm.c b/ImageMagick-7.1.1-44/coders/pnm.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pnm.c rename to ImageMagick-7.1.1-44/coders/pnm.c diff --git a/ImageMagick-7.1.1-43/coders/pnm.h b/ImageMagick-7.1.1-44/coders/pnm.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pnm.h rename to ImageMagick-7.1.1-44/coders/pnm.h diff --git a/ImageMagick-7.1.1-43/coders/ps.c b/ImageMagick-7.1.1-44/coders/ps.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ps.c rename to ImageMagick-7.1.1-44/coders/ps.c diff --git a/ImageMagick-7.1.1-43/coders/ps.h b/ImageMagick-7.1.1-44/coders/ps.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ps.h rename to ImageMagick-7.1.1-44/coders/ps.h diff --git a/ImageMagick-7.1.1-43/coders/ps2.c b/ImageMagick-7.1.1-44/coders/ps2.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ps2.c rename to ImageMagick-7.1.1-44/coders/ps2.c diff --git a/ImageMagick-7.1.1-43/coders/ps2.h b/ImageMagick-7.1.1-44/coders/ps2.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ps2.h rename to ImageMagick-7.1.1-44/coders/ps2.h diff --git a/ImageMagick-7.1.1-43/coders/ps3.c b/ImageMagick-7.1.1-44/coders/ps3.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ps3.c rename to ImageMagick-7.1.1-44/coders/ps3.c diff --git a/ImageMagick-7.1.1-43/coders/ps3.h b/ImageMagick-7.1.1-44/coders/ps3.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ps3.h rename to ImageMagick-7.1.1-44/coders/ps3.h diff --git a/ImageMagick-7.1.1-43/coders/psd-private.h b/ImageMagick-7.1.1-44/coders/psd-private.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/psd-private.h rename to ImageMagick-7.1.1-44/coders/psd-private.h diff --git a/ImageMagick-7.1.1-43/coders/psd.c b/ImageMagick-7.1.1-44/coders/psd.c similarity index 97% rename from ImageMagick-7.1.1-43/coders/psd.c rename to ImageMagick-7.1.1-44/coders/psd.c index 050abcd56..07eeb726b 100644 --- a/ImageMagick-7.1.1-43/coders/psd.c +++ b/ImageMagick-7.1.1-44/coders/psd.c @@ -3018,8 +3018,7 @@ static size_t PSDPackbitsEncodeImage(Image *image,const size_t length, } static size_t WriteCompressionStart(const PSDInfo *psd_info,Image *image, - const Image *next_image,const CompressionType compression, - const ssize_t channels) + const Image *layer,const CompressionType compression,const ssize_t channels) { size_t length; @@ -3032,7 +3031,7 @@ static size_t WriteCompressionStart(const PSDInfo *psd_info,Image *image, { length=(size_t) WriteBlobShort(image,RLE); for (i=0; i < channels; i++) - for (y=0; y < (ssize_t) next_image->rows; y++) + for (y=0; y < (ssize_t) layer->rows; y++) length=(size_t) ((ssize_t) length+SetPSDOffset(psd_info,image,0)); } #ifdef MAGICKCORE_ZLIB_DELEGATE @@ -3045,7 +3044,7 @@ static size_t WriteCompressionStart(const PSDInfo *psd_info,Image *image, } static size_t WritePSDChannel(const PSDInfo *psd_info, - const ImageInfo *image_info,Image *image,Image *next_image, + const ImageInfo *image_info,Image *image,Image *layer, const QuantumType quantum_type, unsigned char *compact_pixels, MagickOffsetType size_offset,const MagickBooleanType separate, const CompressionType compression,ExceptionInfo *exception) @@ -3089,14 +3088,14 @@ static size_t WritePSDChannel(const PSDInfo *psd_info, if (separate != MagickFalse) { size_offset=TellBlob(image)+2; - count+=(ssize_t) WriteCompressionStart(psd_info,image,next_image, + count+=(ssize_t) WriteCompressionStart(psd_info,image,layer, compression,1); } - if (next_image->depth > 8) - next_image->depth=16; + if (layer->depth > 8) + layer->depth=16; monochrome=IsImageMonochrome(image) && (image->depth == 1) ? MagickTrue : MagickFalse; - quantum_info=AcquireQuantumInfo(image_info,next_image); + quantum_info=AcquireQuantumInfo(image_info,layer); if (quantum_info == (QuantumInfo *) NULL) return(0); pixels=(unsigned char *) GetQuantumPixels(quantum_info); @@ -3124,12 +3123,12 @@ static size_t WritePSDChannel(const PSDInfo *psd_info, } } #endif - for (y=0; y < (ssize_t) next_image->rows; y++) + for (y=0; y < (ssize_t) layer->rows; y++) { - p=GetVirtualPixels(next_image,0,y,next_image->columns,1,exception); + p=GetVirtualPixels(layer,0,y,layer->columns,1,exception); if (p == (const Quantum *) NULL) break; - length=ExportQuantumPixels(next_image,(CacheView *) NULL,quantum_info, + length=ExportQuantumPixels(layer,(CacheView *) NULL,quantum_info, quantum_type,pixels,exception); if (monochrome != MagickFalse) for (i=0; i < (ssize_t) length; i++) @@ -3146,7 +3145,7 @@ static size_t WritePSDChannel(const PSDInfo *psd_info, { stream.avail_in=(uInt) length; stream.next_in=(Bytef *) pixels; - if (y == (ssize_t) next_image->rows-1) + if (y == (ssize_t) layer->rows-1) flush=Z_FINISH; do { stream.avail_out=(uInt) MagickMinBufferExtent; @@ -3195,7 +3194,7 @@ static unsigned char *AcquireCompactPixels(const Image *image, } static size_t WritePSDChannels(const PSDInfo *psd_info, - const ImageInfo *image_info,Image *image,Image *next_image, + const ImageInfo *image_info,Image *image,Image *layer, MagickOffsetType size_offset,const MagickBooleanType separate, ExceptionInfo *exception) { @@ -3210,134 +3209,134 @@ static size_t WritePSDChannels(const PSDInfo *psd_info, size_t channels, - count, length, - offset_length; + offset_length, + total_length; unsigned char *compact_pixels; - count=0; + total_length=0; offset_length=0; rows_offset=0; compact_pixels=(unsigned char *) NULL; - compression=next_image->compression; + compression=layer->compression; if (image_info->compression != UndefinedCompression) compression=image_info->compression; if (compression == RLECompression) { - compact_pixels=AcquireCompactPixels(next_image,exception); + compact_pixels=AcquireCompactPixels(layer,exception); if (compact_pixels == (unsigned char *) NULL) return(0); } channels=1; if (separate == MagickFalse) { - if ((next_image->storage_class != PseudoClass) || - (IsImageGray(next_image) != MagickFalse)) + if ((layer->storage_class != PseudoClass) || + (IsImageGray(layer) != MagickFalse)) { - if (IsImageGray(next_image) == MagickFalse) - channels=(size_t) (next_image->colorspace == CMYKColorspace ? 4 : + if (IsImageGray(layer) == MagickFalse) + channels=(size_t) (layer->colorspace == CMYKColorspace ? 4 : 3); - if (next_image->alpha_trait != UndefinedPixelTrait) + if (layer->alpha_trait != UndefinedPixelTrait) channels++; } rows_offset=TellBlob(image)+2; - count+=WriteCompressionStart(psd_info,image,next_image,compression, + total_length+=WriteCompressionStart(psd_info,image,layer,compression, (ssize_t) channels); - offset_length=(next_image->rows*(psd_info->version == 1 ? 2 : 4)); + offset_length=(layer->rows*(psd_info->version == 1 ? 2 : 4)); } size_offset+=2; - if ((next_image->storage_class == PseudoClass) && - (IsImageGray(next_image) == MagickFalse)) + if ((layer->storage_class == PseudoClass) && + (IsImageGray(layer) == MagickFalse)) { - length=WritePSDChannel(psd_info,image_info,image,next_image, + length=WritePSDChannel(psd_info,image_info,image,layer, IndexQuantum,compact_pixels,rows_offset,separate,compression, exception); if (separate != MagickFalse) size_offset+=WritePSDSize(psd_info,image,length,size_offset)+2; else rows_offset+=(MagickOffsetType) offset_length; - count+=length; + total_length+=length; } else { - if (IsImageGray(next_image) != MagickFalse) + if (IsImageGray(layer) != MagickFalse) { - length=WritePSDChannel(psd_info,image_info,image,next_image, + length=WritePSDChannel(psd_info,image_info,image,layer, GrayQuantum,compact_pixels,rows_offset,separate,compression, exception); if (separate != MagickFalse) size_offset+=WritePSDSize(psd_info,image,length,size_offset)+2; else rows_offset+=(MagickOffsetType) offset_length; - count+=length; + total_length+=length; } else { - if (next_image->colorspace == CMYKColorspace) - (void) NegateCMYK(next_image,exception); + if (layer->colorspace == CMYKColorspace) + (void) NegateCMYK(layer,exception); - length=WritePSDChannel(psd_info,image_info,image,next_image, + length=WritePSDChannel(psd_info,image_info,image,layer, RedQuantum,compact_pixels,rows_offset,separate,compression, exception); if (separate != MagickFalse) size_offset+=WritePSDSize(psd_info,image,length,size_offset)+2; else rows_offset+=(MagickOffsetType) offset_length; - count+=length; + total_length+=length; - length=WritePSDChannel(psd_info,image_info,image,next_image, + length=WritePSDChannel(psd_info,image_info,image,layer, GreenQuantum,compact_pixels,rows_offset,separate,compression, exception); if (separate != MagickFalse) size_offset+=WritePSDSize(psd_info,image,length,size_offset)+2; else rows_offset+=(MagickOffsetType) offset_length; - count+=length; + total_length+=length; - length=WritePSDChannel(psd_info,image_info,image,next_image, + length=WritePSDChannel(psd_info,image_info,image,layer, BlueQuantum,compact_pixels,rows_offset,separate,compression, exception); if (separate != MagickFalse) size_offset+=WritePSDSize(psd_info,image,length,size_offset)+2; else rows_offset+=(MagickOffsetType) offset_length; - count+=length; + total_length+=length; - if (next_image->colorspace == CMYKColorspace) + if (layer->colorspace == CMYKColorspace) { - length=WritePSDChannel(psd_info,image_info,image,next_image, + length=WritePSDChannel(psd_info,image_info,image,layer, BlackQuantum,compact_pixels,rows_offset,separate,compression, exception); if (separate != MagickFalse) size_offset+=WritePSDSize(psd_info,image,length,size_offset)+2; else rows_offset+=(MagickOffsetType) offset_length; - count+=length; + total_length+=length; } } - if (next_image->alpha_trait != UndefinedPixelTrait) + if (layer->alpha_trait != UndefinedPixelTrait) { - length=WritePSDChannel(psd_info,image_info,image,next_image, + length=WritePSDChannel(psd_info,image_info,image,layer, AlphaQuantum,compact_pixels,rows_offset,separate,compression, exception); if (separate != MagickFalse) size_offset+=WritePSDSize(psd_info,image,length,size_offset)+2; else rows_offset+=(MagickOffsetType) offset_length; - count+=length; + total_length+=length; } } compact_pixels=(unsigned char *) RelinquishMagickMemory(compact_pixels); - if (next_image->colorspace == CMYKColorspace) - (void) NegateCMYK(next_image,exception); + if (layer->colorspace == CMYKColorspace) + (void) NegateCMYK(layer,exception); if (separate != MagickFalse) { const char *property; - property=GetImageArtifact(next_image,"psd:opacity-mask"); + property=GetImageArtifact(layer,"psd:opacity-mask"); if (property != (const char *) NULL) { mask=(Image *) GetImageRegistry(ImageRegistryType,property, @@ -3354,13 +3353,13 @@ static size_t WritePSDChannels(const PSDInfo *psd_info, RedQuantum,compact_pixels,rows_offset,MagickTrue,compression, exception); (void) WritePSDSize(psd_info,image,length,size_offset); - count+=length; + total_length+=length; compact_pixels=(unsigned char *) RelinquishMagickMemory( compact_pixels); } } } - return(count); + return(total_length); } static size_t WritePascalString(Image *image,const char *value,size_t padding) diff --git a/ImageMagick-7.1.1-43/coders/psd.h b/ImageMagick-7.1.1-44/coders/psd.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/psd.h rename to ImageMagick-7.1.1-44/coders/psd.h diff --git a/ImageMagick-7.1.1-43/coders/pwp.c b/ImageMagick-7.1.1-44/coders/pwp.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/pwp.c rename to ImageMagick-7.1.1-44/coders/pwp.c diff --git a/ImageMagick-7.1.1-43/coders/pwp.h b/ImageMagick-7.1.1-44/coders/pwp.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/pwp.h rename to ImageMagick-7.1.1-44/coders/pwp.h diff --git a/ImageMagick-7.1.1-43/coders/qoi.c b/ImageMagick-7.1.1-44/coders/qoi.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/qoi.c rename to ImageMagick-7.1.1-44/coders/qoi.c diff --git a/ImageMagick-7.1.1-43/coders/qoi.h b/ImageMagick-7.1.1-44/coders/qoi.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/qoi.h rename to ImageMagick-7.1.1-44/coders/qoi.h diff --git a/ImageMagick-7.1.1-43/coders/raw.c b/ImageMagick-7.1.1-44/coders/raw.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/raw.c rename to ImageMagick-7.1.1-44/coders/raw.c diff --git a/ImageMagick-7.1.1-43/coders/raw.h b/ImageMagick-7.1.1-44/coders/raw.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/raw.h rename to ImageMagick-7.1.1-44/coders/raw.h diff --git a/ImageMagick-7.1.1-43/coders/rgb.c b/ImageMagick-7.1.1-44/coders/rgb.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/rgb.c rename to ImageMagick-7.1.1-44/coders/rgb.c diff --git a/ImageMagick-7.1.1-43/coders/rgb.h b/ImageMagick-7.1.1-44/coders/rgb.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/rgb.h rename to ImageMagick-7.1.1-44/coders/rgb.h diff --git a/ImageMagick-7.1.1-43/coders/rgf.c b/ImageMagick-7.1.1-44/coders/rgf.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/rgf.c rename to ImageMagick-7.1.1-44/coders/rgf.c diff --git a/ImageMagick-7.1.1-43/coders/rgf.h b/ImageMagick-7.1.1-44/coders/rgf.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/rgf.h rename to ImageMagick-7.1.1-44/coders/rgf.h diff --git a/ImageMagick-7.1.1-43/coders/rla.c b/ImageMagick-7.1.1-44/coders/rla.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/rla.c rename to ImageMagick-7.1.1-44/coders/rla.c diff --git a/ImageMagick-7.1.1-43/coders/rla.h b/ImageMagick-7.1.1-44/coders/rla.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/rla.h rename to ImageMagick-7.1.1-44/coders/rla.h diff --git a/ImageMagick-7.1.1-43/coders/rle.c b/ImageMagick-7.1.1-44/coders/rle.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/rle.c rename to ImageMagick-7.1.1-44/coders/rle.c diff --git a/ImageMagick-7.1.1-43/coders/rle.h b/ImageMagick-7.1.1-44/coders/rle.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/rle.h rename to ImageMagick-7.1.1-44/coders/rle.h diff --git a/ImageMagick-7.1.1-43/coders/scr.c b/ImageMagick-7.1.1-44/coders/scr.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/scr.c rename to ImageMagick-7.1.1-44/coders/scr.c diff --git a/ImageMagick-7.1.1-43/coders/scr.h b/ImageMagick-7.1.1-44/coders/scr.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/scr.h rename to ImageMagick-7.1.1-44/coders/scr.h diff --git a/ImageMagick-7.1.1-43/coders/screenshot.c b/ImageMagick-7.1.1-44/coders/screenshot.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/screenshot.c rename to ImageMagick-7.1.1-44/coders/screenshot.c diff --git a/ImageMagick-7.1.1-43/coders/screenshot.h b/ImageMagick-7.1.1-44/coders/screenshot.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/screenshot.h rename to ImageMagick-7.1.1-44/coders/screenshot.h diff --git a/ImageMagick-7.1.1-43/coders/sct.c b/ImageMagick-7.1.1-44/coders/sct.c similarity index 97% rename from ImageMagick-7.1.1-43/coders/sct.c rename to ImageMagick-7.1.1-44/coders/sct.c index 2b2569fc3..4a98fd0dc 100644 --- a/ImageMagick-7.1.1-43/coders/sct.c +++ b/ImageMagick-7.1.1-44/coders/sct.c @@ -137,6 +137,9 @@ static Image *ReadSCTImage(const ImageInfo *image_info,ExceptionInfo *exception) MagickBooleanType status; + MagickSizeType + extent; + Quantum pixel, *q; @@ -230,6 +233,13 @@ static Image *ReadSCTImage(const ImageInfo *image_info,ExceptionInfo *exception) status=SetImageExtent(image,image->columns,image->rows,exception); if (status == MagickFalse) return(DestroyImageList(image)); + extent=(MagickSizeType) image->rows*image->columns*separations; + if (extent > GetBlobSize(image)) + { + ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile", + image->filename); + return(DestroyImageList(image)); + } /* Convert SCT raster image to pixel packets. */ @@ -283,7 +293,8 @@ static Image *ReadSCTImage(const ImageInfo *image_info,ExceptionInfo *exception) if (SyncAuthenticPixels(image,exception) == MagickFalse) break; if ((image->columns % 2) != 0) - (void) ReadBlobByte(image); /* pad */ + if (ReadBlobByte(image) == EOF) /* pad */ + break; } if (i < (ssize_t) separations) break; diff --git a/ImageMagick-7.1.1-43/coders/sct.h b/ImageMagick-7.1.1-44/coders/sct.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/sct.h rename to ImageMagick-7.1.1-44/coders/sct.h diff --git a/ImageMagick-7.1.1-43/coders/sfw.c b/ImageMagick-7.1.1-44/coders/sfw.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/sfw.c rename to ImageMagick-7.1.1-44/coders/sfw.c diff --git a/ImageMagick-7.1.1-43/coders/sfw.h b/ImageMagick-7.1.1-44/coders/sfw.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/sfw.h rename to ImageMagick-7.1.1-44/coders/sfw.h diff --git a/ImageMagick-7.1.1-43/coders/sgi.c b/ImageMagick-7.1.1-44/coders/sgi.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/sgi.c rename to ImageMagick-7.1.1-44/coders/sgi.c diff --git a/ImageMagick-7.1.1-43/coders/sgi.h b/ImageMagick-7.1.1-44/coders/sgi.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/sgi.h rename to ImageMagick-7.1.1-44/coders/sgi.h diff --git a/ImageMagick-7.1.1-43/coders/sixel.c b/ImageMagick-7.1.1-44/coders/sixel.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/sixel.c rename to ImageMagick-7.1.1-44/coders/sixel.c index 08ca4748e..af5c58710 100644 --- a/ImageMagick-7.1.1-43/coders/sixel.c +++ b/ImageMagick-7.1.1-44/coders/sixel.c @@ -192,7 +192,8 @@ static int hls_to_rgb(int hue, int lum, int sat) magic1=(int) (2*(ssize_t) lum-magic2); b=(hue_to_rgb(magic1,magic2,(ssize_t) hue+(HLSMAX/3))*(ssize_t) RGBMAX+ (HLSMAX/2))/HLSMAX; - r=(hue_to_rgb(magic1,magic2,hue)*RGBMAX+(ssize_t) (HLSMAX/2))/HLSMAX; + r=(hue_to_rgb(magic1,magic2,hue)*(ssize_t) RGBMAX+(ssize_t) (HLSMAX/2))/ + HLSMAX; g=(hue_to_rgb(magic1,magic2,(ssize_t) hue-(HLSMAX/3))*(ssize_t) RGBMAX+ (HLSMAX/2))/HLSMAX; } diff --git a/ImageMagick-7.1.1-43/coders/sixel.h b/ImageMagick-7.1.1-44/coders/sixel.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/sixel.h rename to ImageMagick-7.1.1-44/coders/sixel.h diff --git a/ImageMagick-7.1.1-43/coders/stegano.c b/ImageMagick-7.1.1-44/coders/stegano.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/stegano.c rename to ImageMagick-7.1.1-44/coders/stegano.c diff --git a/ImageMagick-7.1.1-43/coders/stegano.h b/ImageMagick-7.1.1-44/coders/stegano.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/stegano.h rename to ImageMagick-7.1.1-44/coders/stegano.h diff --git a/ImageMagick-7.1.1-43/coders/strimg.c b/ImageMagick-7.1.1-44/coders/strimg.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/strimg.c rename to ImageMagick-7.1.1-44/coders/strimg.c diff --git a/ImageMagick-7.1.1-43/coders/strimg.h b/ImageMagick-7.1.1-44/coders/strimg.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/strimg.h rename to ImageMagick-7.1.1-44/coders/strimg.h diff --git a/ImageMagick-7.1.1-43/coders/sun.c b/ImageMagick-7.1.1-44/coders/sun.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/sun.c rename to ImageMagick-7.1.1-44/coders/sun.c diff --git a/ImageMagick-7.1.1-43/coders/sun.h b/ImageMagick-7.1.1-44/coders/sun.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/sun.h rename to ImageMagick-7.1.1-44/coders/sun.h diff --git a/ImageMagick-7.1.1-43/coders/svg.c b/ImageMagick-7.1.1-44/coders/svg.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/svg.c rename to ImageMagick-7.1.1-44/coders/svg.c diff --git a/ImageMagick-7.1.1-43/coders/svg.h b/ImageMagick-7.1.1-44/coders/svg.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/svg.h rename to ImageMagick-7.1.1-44/coders/svg.h diff --git a/ImageMagick-7.1.1-43/coders/tga.c b/ImageMagick-7.1.1-44/coders/tga.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/tga.c rename to ImageMagick-7.1.1-44/coders/tga.c diff --git a/ImageMagick-7.1.1-43/coders/tga.h b/ImageMagick-7.1.1-44/coders/tga.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/tga.h rename to ImageMagick-7.1.1-44/coders/tga.h diff --git a/ImageMagick-7.1.1-43/coders/thumbnail.c b/ImageMagick-7.1.1-44/coders/thumbnail.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/thumbnail.c rename to ImageMagick-7.1.1-44/coders/thumbnail.c diff --git a/ImageMagick-7.1.1-43/coders/thumbnail.h b/ImageMagick-7.1.1-44/coders/thumbnail.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/thumbnail.h rename to ImageMagick-7.1.1-44/coders/thumbnail.h diff --git a/ImageMagick-7.1.1-43/coders/tiff.c b/ImageMagick-7.1.1-44/coders/tiff.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/tiff.c rename to ImageMagick-7.1.1-44/coders/tiff.c index 0217a432d..66d484eb5 100644 --- a/ImageMagick-7.1.1-43/coders/tiff.c +++ b/ImageMagick-7.1.1-44/coders/tiff.c @@ -321,19 +321,6 @@ static MagickBooleanType IsTIFF(const unsigned char *magick,const size_t length) % o exception: return any errors or warnings in this structure. % */ - -static inline size_t WriteLSBLong(FILE *file,const unsigned int value) -{ - unsigned char - buffer[4]; - - buffer[0]=(unsigned char) value; - buffer[1]=(unsigned char) (value >> 8); - buffer[2]=(unsigned char) (value >> 16); - buffer[3]=(unsigned char) (value >> 24); - return(fwrite(buffer,1,4,file)); -} - static Image *ReadGROUP4Image(const ImageInfo *image_info, ExceptionInfo *exception) { @@ -356,9 +343,6 @@ static Image *ReadGROUP4Image(const ImageInfo *image_info, MagickBooleanType status; - size_t - length; - TIFF *tiff; @@ -414,7 +398,7 @@ static Image *ReadGROUP4Image(const ImageInfo *image_info, } status=MagickTrue; c=ReadBlobByte(image); - for (length=0; c != EOF; length++) + while (c != EOF) { unsigned char byte = (unsigned char) c; if (TIFFWriteRawStrip(tiff,0,&byte,1) < 0) @@ -424,10 +408,14 @@ static Image *ReadGROUP4Image(const ImageInfo *image_info, } c=ReadBlobByte(image); } - TIFFSetField(tiff,TIFFTAG_STRIPBYTECOUNTS,(uint32) length); TIFFClose(tiff); (void) CloseBlob(image); image=DestroyImage(image); + if (status == MagickFalse) + { + (void) RelinquishUniqueFileResource(filename); + return((Image*) NULL); + } /* Read TIFF image. */ @@ -3522,6 +3510,9 @@ static MagickBooleanType WriteTIFFImage(const ImageInfo *image_info, case FaxCompression: case Group4Compression: { + size_t + channels; + if (IsImageMonochrome(image) == MagickFalse) { if (IsImageGray(image) == MagickFalse) @@ -3530,6 +3521,9 @@ static MagickBooleanType WriteTIFFImage(const ImageInfo *image_info, (void) SetImageDepth(image,1,exception); } image->depth=1; + channels=GetPixelChannels(image); + if (channels != 1 && (channels != 2 || image->storage_class != PseudoClass)) + compression=UndefinedCompression; break; } case JPEGCompression: diff --git a/ImageMagick-7.1.1-43/coders/tiff.h b/ImageMagick-7.1.1-44/coders/tiff.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/tiff.h rename to ImageMagick-7.1.1-44/coders/tiff.h diff --git a/ImageMagick-7.1.1-43/coders/tile.c b/ImageMagick-7.1.1-44/coders/tile.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/tile.c rename to ImageMagick-7.1.1-44/coders/tile.c diff --git a/ImageMagick-7.1.1-43/coders/tile.h b/ImageMagick-7.1.1-44/coders/tile.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/tile.h rename to ImageMagick-7.1.1-44/coders/tile.h diff --git a/ImageMagick-7.1.1-43/coders/tim.c b/ImageMagick-7.1.1-44/coders/tim.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/tim.c rename to ImageMagick-7.1.1-44/coders/tim.c diff --git a/ImageMagick-7.1.1-43/coders/tim.h b/ImageMagick-7.1.1-44/coders/tim.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/tim.h rename to ImageMagick-7.1.1-44/coders/tim.h diff --git a/ImageMagick-7.1.1-43/coders/tim2.c b/ImageMagick-7.1.1-44/coders/tim2.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/tim2.c rename to ImageMagick-7.1.1-44/coders/tim2.c diff --git a/ImageMagick-7.1.1-43/coders/tim2.h b/ImageMagick-7.1.1-44/coders/tim2.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/tim2.h rename to ImageMagick-7.1.1-44/coders/tim2.h diff --git a/ImageMagick-7.1.1-43/coders/ttf.c b/ImageMagick-7.1.1-44/coders/ttf.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ttf.c rename to ImageMagick-7.1.1-44/coders/ttf.c diff --git a/ImageMagick-7.1.1-43/coders/ttf.h b/ImageMagick-7.1.1-44/coders/ttf.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ttf.h rename to ImageMagick-7.1.1-44/coders/ttf.h diff --git a/ImageMagick-7.1.1-43/coders/txt.c b/ImageMagick-7.1.1-44/coders/txt.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/txt.c rename to ImageMagick-7.1.1-44/coders/txt.c diff --git a/ImageMagick-7.1.1-43/coders/txt.h b/ImageMagick-7.1.1-44/coders/txt.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/txt.h rename to ImageMagick-7.1.1-44/coders/txt.h diff --git a/ImageMagick-7.1.1-43/coders/uhdr.c b/ImageMagick-7.1.1-44/coders/uhdr.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/uhdr.c rename to ImageMagick-7.1.1-44/coders/uhdr.c diff --git a/ImageMagick-7.1.1-43/coders/uhdr.h b/ImageMagick-7.1.1-44/coders/uhdr.h similarity index 92% rename from ImageMagick-7.1.1-43/coders/uhdr.h rename to ImageMagick-7.1.1-44/coders/uhdr.h index 648756684..7928cad39 100644 --- a/ImageMagick-7.1.1-43/coders/uhdr.h +++ b/ImageMagick-7.1.1-44/coders/uhdr.h @@ -1,5 +1,5 @@ /* - Copyright @ 2024 ImageMagick Studio LLC, a non-profit organization + Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available. You may not use this file except in compliance with the License. You may diff --git a/ImageMagick-7.1.1-43/coders/uil.c b/ImageMagick-7.1.1-44/coders/uil.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/uil.c rename to ImageMagick-7.1.1-44/coders/uil.c diff --git a/ImageMagick-7.1.1-43/coders/uil.h b/ImageMagick-7.1.1-44/coders/uil.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/uil.h rename to ImageMagick-7.1.1-44/coders/uil.h diff --git a/ImageMagick-7.1.1-43/coders/url.c b/ImageMagick-7.1.1-44/coders/url.c similarity index 90% rename from ImageMagick-7.1.1-43/coders/url.c rename to ImageMagick-7.1.1-44/coders/url.c index 7f1e1789e..7fe370d28 100644 --- a/ImageMagick-7.1.1-43/coders/url.c +++ b/ImageMagick-7.1.1-44/coders/url.c @@ -92,6 +92,36 @@ % */ +#if !defined(MAGICKCORE_WINDOWS_SUPPORT) +static Image* InvokeURLDelegate(ImageInfo* read_info,Image* image, + const char *delegate,ExceptionInfo* exception) +{ + Image + *images, + *next; + + MagickBooleanType + status; + + images=(Image *) NULL; + status=InvokeDelegate(read_info,image,delegate,(char *) NULL, + exception); + if (status != MagickFalse) + { + (void) FormatLocaleString(read_info->filename,MagickPathExtent, + "%s.dat",read_info->unique); + *read_info->magick='\0'; + images=ReadImage(read_info,exception); + (void) RelinquishUniqueFileResource(read_info->filename); + if (images != (Image *) NULL) + for (next=images; next != (Image *) NULL; next=next->next) + (void) CopyMagickString(next->filename,image->filename, + MagickPathExtent); + } + return(images); +} +#endif + static Image *ReadURLImage(const ImageInfo *image_info,ExceptionInfo *exception) { char @@ -116,28 +146,16 @@ static Image *ReadURLImage(const ImageInfo *image_info,ExceptionInfo *exception) read_info=CloneImageInfo(image_info); SetImageInfoBlob(read_info,(void *) NULL,0); #if !defined(MAGICKCORE_WINDOWS_SUPPORT) + if (LocaleCompare(read_info->magick,"http") == 0) + { + images=InvokeURLDelegate(read_info,image,"http:decode",exception); + read_info=DestroyImageInfo(read_info); + image=DestroyImage(image); + return(images); + } if (LocaleCompare(read_info->magick,"https") == 0) { - MagickBooleanType - status; - - /* - Leverage delegate to read HTTPS link. - */ - status=InvokeDelegate(read_info,image,"https:decode",(char *) NULL, - exception); - if (status != MagickFalse) - { - (void) FormatLocaleString(read_info->filename,MagickPathExtent, - "%s.dat",read_info->unique); - *read_info->magick='\0'; - images=ReadImage(read_info,exception); - (void) RelinquishUniqueFileResource(read_info->filename); - if (images != (Image *) NULL) - for (next=images; next != (Image *) NULL; next=next->next) - (void) CopyMagickString(next->filename,image->filename, - MagickPathExtent); - } + images=InvokeURLDelegate(read_info,image,"https:decode",exception); read_info=DestroyImageInfo(read_info); image=DestroyImage(image); return(images); @@ -232,9 +250,7 @@ ModuleExport size_t RegisterURLImage(void) *entry; entry=AcquireMagickInfo("URL","HTTP","Uniform Resource Locator (http://)"); -#if defined(MAGICKCORE_WINDOWS_SUPPORT) entry->decoder=(DecodeImageHandler *) ReadURLImage; -#endif entry->format_type=ImplicitFormatType; (void) RegisterMagickInfo(entry); entry=AcquireMagickInfo("URL","HTTPS","Uniform Resource Locator (https://)"); diff --git a/ImageMagick-7.1.1-43/coders/url.h b/ImageMagick-7.1.1-44/coders/url.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/url.h rename to ImageMagick-7.1.1-44/coders/url.h diff --git a/ImageMagick-7.1.1-43/coders/uyvy.c b/ImageMagick-7.1.1-44/coders/uyvy.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/uyvy.c rename to ImageMagick-7.1.1-44/coders/uyvy.c diff --git a/ImageMagick-7.1.1-43/coders/uyvy.h b/ImageMagick-7.1.1-44/coders/uyvy.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/uyvy.h rename to ImageMagick-7.1.1-44/coders/uyvy.h diff --git a/ImageMagick-7.1.1-43/coders/vicar.c b/ImageMagick-7.1.1-44/coders/vicar.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/vicar.c rename to ImageMagick-7.1.1-44/coders/vicar.c diff --git a/ImageMagick-7.1.1-43/coders/vicar.h b/ImageMagick-7.1.1-44/coders/vicar.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/vicar.h rename to ImageMagick-7.1.1-44/coders/vicar.h diff --git a/ImageMagick-7.1.1-43/coders/vid.c b/ImageMagick-7.1.1-44/coders/vid.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/vid.c rename to ImageMagick-7.1.1-44/coders/vid.c diff --git a/ImageMagick-7.1.1-43/coders/vid.h b/ImageMagick-7.1.1-44/coders/vid.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/vid.h rename to ImageMagick-7.1.1-44/coders/vid.h diff --git a/ImageMagick-7.1.1-43/coders/video.c b/ImageMagick-7.1.1-44/coders/video.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/video.c rename to ImageMagick-7.1.1-44/coders/video.c index 28a56d854..ede179055 100644 --- a/ImageMagick-7.1.1-43/coders/video.c +++ b/ImageMagick-7.1.1-44/coders/video.c @@ -328,11 +328,13 @@ ModuleExport size_t RegisterVIDEOImage(void) entry->decoder=(DecodeImageHandler *) ReadVIDEOImage; entry->encoder=(EncodeImageHandler *) WriteVIDEOImage; entry->magick=(IsImageFormatHandler *) IsPNG; + entry->mime_type=ConstantString("image/apng"); entry->flags^=CoderBlobSupportFlag; entry->flags|=CoderDecoderSeekableStreamFlag; (void) RegisterMagickInfo(entry); entry=AcquireMagickInfo("VIDEO","AVI","Microsoft Audio/Visual Interleaved"); entry->decoder=(DecodeImageHandler *) ReadVIDEOImage; + entry->mime_type=ConstantString("image/avif-sequence"); entry->flags^=CoderBlobSupportFlag; entry->flags|=CoderDecoderSeekableStreamFlag; (void) RegisterMagickInfo(entry); diff --git a/ImageMagick-7.1.1-43/coders/video.h b/ImageMagick-7.1.1-44/coders/video.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/video.h rename to ImageMagick-7.1.1-44/coders/video.h diff --git a/ImageMagick-7.1.1-43/coders/viff.c b/ImageMagick-7.1.1-44/coders/viff.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/viff.c rename to ImageMagick-7.1.1-44/coders/viff.c diff --git a/ImageMagick-7.1.1-43/coders/viff.h b/ImageMagick-7.1.1-44/coders/viff.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/viff.h rename to ImageMagick-7.1.1-44/coders/viff.h diff --git a/ImageMagick-7.1.1-43/coders/vips.c b/ImageMagick-7.1.1-44/coders/vips.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/vips.c rename to ImageMagick-7.1.1-44/coders/vips.c diff --git a/ImageMagick-7.1.1-43/coders/vips.h b/ImageMagick-7.1.1-44/coders/vips.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/vips.h rename to ImageMagick-7.1.1-44/coders/vips.h diff --git a/ImageMagick-7.1.1-43/coders/wbmp.c b/ImageMagick-7.1.1-44/coders/wbmp.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/wbmp.c rename to ImageMagick-7.1.1-44/coders/wbmp.c diff --git a/ImageMagick-7.1.1-43/coders/wbmp.h b/ImageMagick-7.1.1-44/coders/wbmp.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/wbmp.h rename to ImageMagick-7.1.1-44/coders/wbmp.h diff --git a/ImageMagick-7.1.1-43/coders/webp.c b/ImageMagick-7.1.1-44/coders/webp.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/webp.c rename to ImageMagick-7.1.1-44/coders/webp.c diff --git a/ImageMagick-7.1.1-43/coders/webp.h b/ImageMagick-7.1.1-44/coders/webp.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/webp.h rename to ImageMagick-7.1.1-44/coders/webp.h diff --git a/ImageMagick-7.1.1-43/coders/wmf.c b/ImageMagick-7.1.1-44/coders/wmf.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/wmf.c rename to ImageMagick-7.1.1-44/coders/wmf.c diff --git a/ImageMagick-7.1.1-43/coders/wmf.h b/ImageMagick-7.1.1-44/coders/wmf.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/wmf.h rename to ImageMagick-7.1.1-44/coders/wmf.h diff --git a/ImageMagick-7.1.1-43/coders/wpg.c b/ImageMagick-7.1.1-44/coders/wpg.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/wpg.c rename to ImageMagick-7.1.1-44/coders/wpg.c diff --git a/ImageMagick-7.1.1-43/coders/wpg.h b/ImageMagick-7.1.1-44/coders/wpg.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/wpg.h rename to ImageMagick-7.1.1-44/coders/wpg.h diff --git a/ImageMagick-7.1.1-43/coders/x.c b/ImageMagick-7.1.1-44/coders/x.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/x.c rename to ImageMagick-7.1.1-44/coders/x.c diff --git a/ImageMagick-7.1.1-43/coders/x.h b/ImageMagick-7.1.1-44/coders/x.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/x.h rename to ImageMagick-7.1.1-44/coders/x.h diff --git a/ImageMagick-7.1.1-43/coders/xbm.c b/ImageMagick-7.1.1-44/coders/xbm.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/xbm.c rename to ImageMagick-7.1.1-44/coders/xbm.c diff --git a/ImageMagick-7.1.1-43/coders/xbm.h b/ImageMagick-7.1.1-44/coders/xbm.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/xbm.h rename to ImageMagick-7.1.1-44/coders/xbm.h diff --git a/ImageMagick-7.1.1-43/coders/xc.c b/ImageMagick-7.1.1-44/coders/xc.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/xc.c rename to ImageMagick-7.1.1-44/coders/xc.c diff --git a/ImageMagick-7.1.1-43/coders/xc.h b/ImageMagick-7.1.1-44/coders/xc.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/xc.h rename to ImageMagick-7.1.1-44/coders/xc.h diff --git a/ImageMagick-7.1.1-43/coders/xcf.c b/ImageMagick-7.1.1-44/coders/xcf.c similarity index 99% rename from ImageMagick-7.1.1-43/coders/xcf.c rename to ImageMagick-7.1.1-44/coders/xcf.c index 4c655b52c..1fe92f722 100644 --- a/ImageMagick-7.1.1-43/coders/xcf.c +++ b/ImageMagick-7.1.1-44/coders/xcf.c @@ -1156,7 +1156,6 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) size_t image_type, - precision, length; ssize_t @@ -1193,12 +1192,17 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) if ((doc_info.width > 262144) || (doc_info.height > 262144)) ThrowReaderException(CorruptImageError,"ImproperImageHeader"); doc_info.image_type=ReadBlobMSBLong(image); - precision=150; if (doc_info.version >= 4) { + size_t + precision; + precision=ReadBlobMSBLong(image); - if (precision == 0) + if ((precision == 0) && (doc_info.version == 4)) + precision=150; + if ((precision == 100) && (doc_info.version < 7)) precision=150; + /* we only support 8-bit gamma integer */ if (precision != 150) ThrowReaderException(CoderError,"DataStorageTypeIsNotSupported"); } diff --git a/ImageMagick-7.1.1-43/coders/xcf.h b/ImageMagick-7.1.1-44/coders/xcf.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/xcf.h rename to ImageMagick-7.1.1-44/coders/xcf.h diff --git a/ImageMagick-7.1.1-43/coders/xpm.c b/ImageMagick-7.1.1-44/coders/xpm.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/xpm.c rename to ImageMagick-7.1.1-44/coders/xpm.c diff --git a/ImageMagick-7.1.1-43/coders/xpm.h b/ImageMagick-7.1.1-44/coders/xpm.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/xpm.h rename to ImageMagick-7.1.1-44/coders/xpm.h diff --git a/ImageMagick-7.1.1-43/coders/xps.c b/ImageMagick-7.1.1-44/coders/xps.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/xps.c rename to ImageMagick-7.1.1-44/coders/xps.c diff --git a/ImageMagick-7.1.1-43/coders/xps.h b/ImageMagick-7.1.1-44/coders/xps.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/xps.h rename to ImageMagick-7.1.1-44/coders/xps.h diff --git a/ImageMagick-7.1.1-43/coders/xwd.c b/ImageMagick-7.1.1-44/coders/xwd.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/xwd.c rename to ImageMagick-7.1.1-44/coders/xwd.c diff --git a/ImageMagick-7.1.1-43/coders/xwd.h b/ImageMagick-7.1.1-44/coders/xwd.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/xwd.h rename to ImageMagick-7.1.1-44/coders/xwd.h diff --git a/ImageMagick-7.1.1-43/coders/yaml.c b/ImageMagick-7.1.1-44/coders/yaml.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/yaml.c rename to ImageMagick-7.1.1-44/coders/yaml.c diff --git a/ImageMagick-7.1.1-43/coders/yaml.h b/ImageMagick-7.1.1-44/coders/yaml.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/yaml.h rename to ImageMagick-7.1.1-44/coders/yaml.h diff --git a/ImageMagick-7.1.1-43/coders/ycbcr.c b/ImageMagick-7.1.1-44/coders/ycbcr.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/ycbcr.c rename to ImageMagick-7.1.1-44/coders/ycbcr.c diff --git a/ImageMagick-7.1.1-43/coders/ycbcr.h b/ImageMagick-7.1.1-44/coders/ycbcr.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/ycbcr.h rename to ImageMagick-7.1.1-44/coders/ycbcr.h diff --git a/ImageMagick-7.1.1-43/coders/yuv.c b/ImageMagick-7.1.1-44/coders/yuv.c similarity index 100% rename from ImageMagick-7.1.1-43/coders/yuv.c rename to ImageMagick-7.1.1-44/coders/yuv.c diff --git a/ImageMagick-7.1.1-43/coders/yuv.h b/ImageMagick-7.1.1-44/coders/yuv.h similarity index 100% rename from ImageMagick-7.1.1-43/coders/yuv.h rename to ImageMagick-7.1.1-44/coders/yuv.h diff --git a/ImageMagick-7.1.1-43/configs/arm/MagickCore/magick-baseconfig.h b/ImageMagick-7.1.1-44/configs/arm/MagickCore/magick-baseconfig.h similarity index 99% rename from ImageMagick-7.1.1-43/configs/arm/MagickCore/magick-baseconfig.h rename to ImageMagick-7.1.1-44/configs/arm/MagickCore/magick-baseconfig.h index 90b13a3e6..0c5f9e88a 100644 --- a/ImageMagick-7.1.1-43/configs/arm/MagickCore/magick-baseconfig.h +++ b/ImageMagick-7.1.1-44/configs/arm/MagickCore/magick-baseconfig.h @@ -1203,7 +1203,7 @@ /* Define to the full name and version of this package. */ #ifndef MAGICKCORE_PACKAGE_STRING -#define MAGICKCORE_PACKAGE_STRING "ImageMagick 7.1.1-43" +#define MAGICKCORE_PACKAGE_STRING "ImageMagick 7.1.1-44" #endif /* Define to the one symbol short name of this package. */ @@ -1218,7 +1218,7 @@ /* Define to the version of this package. */ #ifndef MAGICKCORE_PACKAGE_VERSION -#define MAGICKCORE_PACKAGE_VERSION "7.1.1-43" +#define MAGICKCORE_PACKAGE_VERSION "7.1.1-44" #endif /* Define if you have PANGOCAIRO library */ @@ -1435,7 +1435,7 @@ /* Version number of package */ #ifndef MAGICKCORE_VERSION -#define MAGICKCORE_VERSION "7.1.1-43" +#define MAGICKCORE_VERSION "7.1.1-44" #endif /* Define if you have WEBPMUX library */ diff --git a/ImageMagick-7.1.1-43/configs/arm/MagickCore/version.h b/ImageMagick-7.1.1-44/configs/arm/MagickCore/version.h similarity index 96% rename from ImageMagick-7.1.1-43/configs/arm/MagickCore/version.h rename to ImageMagick-7.1.1-44/configs/arm/MagickCore/version.h index 1c0e0d62c..70a5b8b3d 100644 --- a/ImageMagick-7.1.1-43/configs/arm/MagickCore/version.h +++ b/ImageMagick-7.1.1-44/configs/arm/MagickCore/version.h @@ -30,16 +30,16 @@ extern "C" { #define MagickLibVersion 0x711 #define MagickLibVersionText "7.1.1" #define MagickLibVersionNumber 10,0,2 -#define MagickLibAddendum "'-43" +#define MagickLibAddendum "'-44" #define MagickLibInterface 10 #define MagickLibMinInterface 10 #define MagickPlatform "arm" #define MagickppLibVersionText "7.1.1" #define MagickppLibVersionNumber 5:0:0 -#define MagickppLibAddendum "'-43" +#define MagickppLibAddendum "'-44" #define MagickppLibInterface 5 #define MagickppLibMinInterface 5 -#define MagickReleaseDate "2024-12-22" +#define MagickReleaseDate "2025-02-22" #define MagickAuthoritativeLicense \ "https://imagemagick.org/script/license.php" #define MagickAuthoritativeURL "https://imagemagick.org" diff --git a/ImageMagick-7.1.1-43/configs/arm64/MagickCore/magick-baseconfig.h b/ImageMagick-7.1.1-44/configs/arm64/MagickCore/magick-baseconfig.h similarity index 99% rename from ImageMagick-7.1.1-43/configs/arm64/MagickCore/magick-baseconfig.h rename to ImageMagick-7.1.1-44/configs/arm64/MagickCore/magick-baseconfig.h index 3b6366c07..6ecbd5d3f 100644 --- a/ImageMagick-7.1.1-43/configs/arm64/MagickCore/magick-baseconfig.h +++ b/ImageMagick-7.1.1-44/configs/arm64/MagickCore/magick-baseconfig.h @@ -1203,7 +1203,7 @@ /* Define to the full name and version of this package. */ #ifndef MAGICKCORE_PACKAGE_STRING -#define MAGICKCORE_PACKAGE_STRING "ImageMagick 7.1.1-43" +#define MAGICKCORE_PACKAGE_STRING "ImageMagick 7.1.1-44" #endif /* Define to the one symbol short name of this package. */ @@ -1218,7 +1218,7 @@ /* Define to the version of this package. */ #ifndef MAGICKCORE_PACKAGE_VERSION -#define MAGICKCORE_PACKAGE_VERSION "7.1.1-43" +#define MAGICKCORE_PACKAGE_VERSION "7.1.1-44" #endif /* Define if you have PANGOCAIRO library */ @@ -1435,7 +1435,7 @@ /* Version number of package */ #ifndef MAGICKCORE_VERSION -#define MAGICKCORE_VERSION "7.1.1-43" +#define MAGICKCORE_VERSION "7.1.1-44" #endif /* Define if you have WEBPMUX library */ diff --git a/ImageMagick-7.1.1-43/configs/arm64/MagickCore/version.h b/ImageMagick-7.1.1-44/configs/arm64/MagickCore/version.h similarity index 96% rename from ImageMagick-7.1.1-43/configs/arm64/MagickCore/version.h rename to ImageMagick-7.1.1-44/configs/arm64/MagickCore/version.h index c175f2142..a3551a10f 100644 --- a/ImageMagick-7.1.1-43/configs/arm64/MagickCore/version.h +++ b/ImageMagick-7.1.1-44/configs/arm64/MagickCore/version.h @@ -30,16 +30,16 @@ extern "C" { #define MagickLibVersion 0x711 #define MagickLibVersionText "7.1.1" #define MagickLibVersionNumber 10,0,2 -#define MagickLibAddendum "'-43" +#define MagickLibAddendum "'-44" #define MagickLibInterface 10 #define MagickLibMinInterface 10 #define MagickPlatform "aarch64" #define MagickppLibVersionText "7.1.1" #define MagickppLibVersionNumber 5:0:0 -#define MagickppLibAddendum "'-43" +#define MagickppLibAddendum "'-44" #define MagickppLibInterface 5 #define MagickppLibMinInterface 5 -#define MagickReleaseDate "2024-12-22" +#define MagickReleaseDate "2025-02-22" #define MagickAuthoritativeLicense \ "https://imagemagick.org/script/license.php" #define MagickAuthoritativeURL "https://imagemagick.org" diff --git a/ImageMagick-7.1.1-43/configs/x86-64/MagickCore/magick-baseconfig.h b/ImageMagick-7.1.1-44/configs/x86-64/MagickCore/magick-baseconfig.h similarity index 99% rename from ImageMagick-7.1.1-43/configs/x86-64/MagickCore/magick-baseconfig.h rename to ImageMagick-7.1.1-44/configs/x86-64/MagickCore/magick-baseconfig.h index be2d04ca2..92cead8f1 100644 --- a/ImageMagick-7.1.1-43/configs/x86-64/MagickCore/magick-baseconfig.h +++ b/ImageMagick-7.1.1-44/configs/x86-64/MagickCore/magick-baseconfig.h @@ -1203,7 +1203,7 @@ /* Define to the full name and version of this package. */ #ifndef MAGICKCORE_PACKAGE_STRING -#define MAGICKCORE_PACKAGE_STRING "ImageMagick 7.1.1-43" +#define MAGICKCORE_PACKAGE_STRING "ImageMagick 7.1.1-44" #endif /* Define to the one symbol short name of this package. */ @@ -1218,7 +1218,7 @@ /* Define to the version of this package. */ #ifndef MAGICKCORE_PACKAGE_VERSION -#define MAGICKCORE_PACKAGE_VERSION "7.1.1-43" +#define MAGICKCORE_PACKAGE_VERSION "7.1.1-44" #endif /* Define if you have PANGOCAIRO library */ @@ -1435,7 +1435,7 @@ /* Version number of package */ #ifndef MAGICKCORE_VERSION -#define MAGICKCORE_VERSION "7.1.1-43" +#define MAGICKCORE_VERSION "7.1.1-44" #endif /* Define if you have WEBPMUX library */ diff --git a/ImageMagick-7.1.1-43/configs/x86-64/MagickCore/version.h b/ImageMagick-7.1.1-44/configs/x86-64/MagickCore/version.h similarity index 96% rename from ImageMagick-7.1.1-43/configs/x86-64/MagickCore/version.h rename to ImageMagick-7.1.1-44/configs/x86-64/MagickCore/version.h index 68e346082..74968ea49 100644 --- a/ImageMagick-7.1.1-43/configs/x86-64/MagickCore/version.h +++ b/ImageMagick-7.1.1-44/configs/x86-64/MagickCore/version.h @@ -30,16 +30,16 @@ extern "C" { #define MagickLibVersion 0x711 #define MagickLibVersionText "7.1.1" #define MagickLibVersionNumber 10,0,2 -#define MagickLibAddendum "'-43" +#define MagickLibAddendum "'-44" #define MagickLibInterface 10 #define MagickLibMinInterface 10 #define MagickPlatform "x86_64" #define MagickppLibVersionText "7.1.1" #define MagickppLibVersionNumber 5:0:0 -#define MagickppLibAddendum "'-43" +#define MagickppLibAddendum "'-44" #define MagickppLibInterface 5 #define MagickppLibMinInterface 5 -#define MagickReleaseDate "2024-12-22" +#define MagickReleaseDate "2025-02-22" #define MagickAuthoritativeLicense \ "https://imagemagick.org/script/license.php" #define MagickAuthoritativeURL "https://imagemagick.org" diff --git a/ImageMagick-7.1.1-43/configs/x86/MagickCore/magick-baseconfig.h b/ImageMagick-7.1.1-44/configs/x86/MagickCore/magick-baseconfig.h similarity index 99% rename from ImageMagick-7.1.1-43/configs/x86/MagickCore/magick-baseconfig.h rename to ImageMagick-7.1.1-44/configs/x86/MagickCore/magick-baseconfig.h index cf61e06a3..27ce0f7e4 100644 --- a/ImageMagick-7.1.1-43/configs/x86/MagickCore/magick-baseconfig.h +++ b/ImageMagick-7.1.1-44/configs/x86/MagickCore/magick-baseconfig.h @@ -1203,7 +1203,7 @@ /* Define to the full name and version of this package. */ #ifndef MAGICKCORE_PACKAGE_STRING -#define MAGICKCORE_PACKAGE_STRING "ImageMagick 7.1.1-43" +#define MAGICKCORE_PACKAGE_STRING "ImageMagick 7.1.1-44" #endif /* Define to the one symbol short name of this package. */ @@ -1218,7 +1218,7 @@ /* Define to the version of this package. */ #ifndef MAGICKCORE_PACKAGE_VERSION -#define MAGICKCORE_PACKAGE_VERSION "7.1.1-43" +#define MAGICKCORE_PACKAGE_VERSION "7.1.1-44" #endif /* Define if you have PANGOCAIRO library */ @@ -1435,7 +1435,7 @@ /* Version number of package */ #ifndef MAGICKCORE_VERSION -#define MAGICKCORE_VERSION "7.1.1-43" +#define MAGICKCORE_VERSION "7.1.1-44" #endif /* Define if you have WEBPMUX library */ diff --git a/ImageMagick-7.1.1-43/configs/x86/MagickCore/version.h b/ImageMagick-7.1.1-44/configs/x86/MagickCore/version.h similarity index 96% rename from ImageMagick-7.1.1-43/configs/x86/MagickCore/version.h rename to ImageMagick-7.1.1-44/configs/x86/MagickCore/version.h index 5199e8172..9c7ef8160 100644 --- a/ImageMagick-7.1.1-43/configs/x86/MagickCore/version.h +++ b/ImageMagick-7.1.1-44/configs/x86/MagickCore/version.h @@ -30,16 +30,16 @@ extern "C" { #define MagickLibVersion 0x711 #define MagickLibVersionText "7.1.1" #define MagickLibVersionNumber 10,0,2 -#define MagickLibAddendum "'-43" +#define MagickLibAddendum "'-44" #define MagickLibInterface 10 #define MagickLibMinInterface 10 #define MagickPlatform "x86" #define MagickppLibVersionText "7.1.1" #define MagickppLibVersionNumber 5:0:0 -#define MagickppLibAddendum "'-43" +#define MagickppLibAddendum "'-44" #define MagickppLibInterface 5 #define MagickppLibMinInterface 5 -#define MagickReleaseDate "2024-12-22" +#define MagickReleaseDate "2025-02-22" #define MagickAuthoritativeLicense \ "https://imagemagick.org/script/license.php" #define MagickAuthoritativeURL "https://imagemagick.org" diff --git a/ImageMagick-7.1.1-43/filters/analyze.c b/ImageMagick-7.1.1-44/filters/analyze.c similarity index 100% rename from ImageMagick-7.1.1-43/filters/analyze.c rename to ImageMagick-7.1.1-44/filters/analyze.c diff --git a/ImageMagick-7.1.1-43/oss-fuzz/encoder_format.h b/ImageMagick-7.1.1-44/oss-fuzz/encoder_format.h similarity index 100% rename from ImageMagick-7.1.1-43/oss-fuzz/encoder_format.h rename to ImageMagick-7.1.1-44/oss-fuzz/encoder_format.h diff --git a/ImageMagick-7.1.1-43/utilities/magick.c b/ImageMagick-7.1.1-44/utilities/magick.c similarity index 100% rename from ImageMagick-7.1.1-43/utilities/magick.c rename to ImageMagick-7.1.1-44/utilities/magick.c diff --git a/README.md b/README.md index 14fa2d1ae..614759fb3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# Android ImageMagick 7.1.1-43 +# Android ImageMagick 7.1.1-44 [![Build](https://github.com/MolotovCherry/Android-ImageMagick7/actions/workflows/build.yml/badge.svg)](https://github.com/MolotovCherry//Android-ImageMagick7/actions/workflows/build.yml) [![CodeQL](https://github.com/MolotovCherry/Android-ImageMagick7/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/MolotovCherry/Android-ImageMagick7/actions/workflows/codeql-analysis.yml) ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/MolotovCherry/Android-ImageMagick7?style=plastic)