From efe1545a6b7dc952489308c1e395f71cbb5bc8f4 Mon Sep 17 00:00:00 2001 From: Mike Wey Date: Sat, 19 Nov 2011 12:14:44 +0100 Subject: Fix problems with ImageMagick 6.6.0. --- dmagick/Array.d | 11 +++++++++-- dmagick/Image.d | 41 +++++++++++++++++++++++++++++------------ 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/dmagick/Array.d b/dmagick/Array.d index 8ff60f7..62f17fa 100644 --- a/dmagick/Array.d +++ b/dmagick/Array.d @@ -66,8 +66,15 @@ Image average(Image[] images) linkImages(images); scope(exit) unlinkImages(images); - MagickCoreImage* image = - EvaluateImages(images[0].imageRef, MagickEvaluateOperator.MeanEvaluateOperator, DMagickExceptionInfo()); + static if ( is(typeof(EvaluateImages)) ) + { + MagickCoreImage* image = + EvaluateImages(images[0].imageRef, MagickEvaluateOperator.MeanEvaluateOperator, DMagickExceptionInfo()); + } + else + { + MagickCoreImage* image = AverageImages(images[0].imageRef, DMagickExceptionInfo()); + } return new Image(image); } diff --git a/dmagick/Image.d b/dmagick/Image.d index f407389..649106f 100644 --- a/dmagick/Image.d +++ b/dmagick/Image.d @@ -809,23 +809,40 @@ class Image if ( matrix.length > 6 || matrix[0].length > 6 ) throw new DMagickException("Matrix must be 6x6 or smaller."); - KernelInfo* kernelInfo = AcquireKernelInfo("1"); - scope(exit) DestroyKernelInfo(kernelInfo); + static if ( is(typeof(ColorMatrixImage)) ) + { + KernelInfo* kernelInfo = AcquireKernelInfo("1"); + scope(exit) DestroyKernelInfo(kernelInfo); - kernelInfo.width = matrix[0].length; - kernelInfo.height = matrix.length; - kernelInfo.values = cast(double*)AcquireQuantumMemory(kernelInfo.width*kernelInfo.height, double.sizeof); - scope(exit) kernelInfo.values = cast(double*)RelinquishMagickMemory(kernelInfo.values); + kernelInfo.width = matrix[0].length; + kernelInfo.height = matrix.length; + kernelInfo.values = cast(double*)AcquireQuantumMemory(kernelInfo.width*kernelInfo.height, double.sizeof); + scope(exit) kernelInfo.values = cast(double*)RelinquishMagickMemory(kernelInfo.values); - foreach ( i, row; matrix ) - { - size_t offset = i * row.length; + foreach ( i, row; matrix ) + { + size_t offset = i * row.length; - kernelInfo.values[offset .. offset+row.length] = row; + kernelInfo.values[offset .. offset+row.length] = row; + } + + MagickCoreImage* image = + ColorMatrixImage(imageRef, kernelInfo, DMagickExceptionInfo()); } + else + { + double[] values; - MagickCoreImage* image = - ColorMatrixImage(imageRef, kernelInfo, DMagickExceptionInfo()); + foreach ( i, row; matrix ) + { + size_t offset = i * row.length; + + values[offset .. offset+row.length] = row; + } + + MagickCoreImage* image = + RecolorImage(imageRef, matrix.length, values.ptr, DMagickExceptionInfo()); + } imageRef = ImageRef(image); } -- cgit v1.2.3