From: cristy Date: Wed, 14 Dec 2011 18:25:41 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6539 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a96f2494a8e79144a225056be9545cc75e868137;p=imagemagick --- diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index 5ad5150ed..8f2296adf 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -643,10 +643,10 @@ void Magick::Image::colorMatrix (const size_t order_, kernel_info=AcquireKernelInfo((const char *) NULL); kernel_info->width=order_; kernel_info->height=order_; - kernel_info->values=(double *) color_matrix_; + kernel_info->values=(MagickRealType *) color_matrix_; MagickCore::Image* newImage = ColorMatrixImage( image(), kernel_info, &exceptionInfo ); - kernel_info->values=(double *) NULL; + kernel_info->values=(MagickRealType *) NULL; kernel_info=DestroyKernelInfo(kernel_info); replaceImage( newImage ); throwException( exceptionInfo ); @@ -760,11 +760,11 @@ void Magick::Image::convolve ( const size_t order_, kernel_info=AcquireKernelInfo((const char *) NULL); kernel_info->width=order_; kernel_info->height=order_; - kernel_info->values=(double *) kernel_; + kernel_info->values=(MagickRealType *) kernel_; kernel_info->bias=image()->bias; MagickCore::Image* newImage = ConvolveImage ( image(), kernel_info, &exceptionInfo ); - kernel_info->values=(double *) NULL; + kernel_info->values=(MagickRealType *) NULL; kernel_info=DestroyKernelInfo(kernel_info); replaceImage( newImage ); throwException( exceptionInfo ); diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h index a5b1fe79f..353b91039 100644 --- a/Magick++/lib/Magick++/Include.h +++ b/Magick++/lib/Magick++/Include.h @@ -130,6 +130,7 @@ namespace Magick { // The datatype for an RGB component using MagickCore::Quantum; + using MagickCore::MagickRealType; using MagickCore::MagickSizeType; // Boolean types diff --git a/MagickCore/composite.c b/MagickCore/composite.c index c99afb631..ee1437d51 100644 --- a/MagickCore/composite.c +++ b/MagickCore/composite.c @@ -1488,10 +1488,10 @@ static inline void CompositeXor(const PixelInfo *p,const PixelInfo *q, } static void HSBComposite(const double hue,const double saturation, - const double brightness,MagickRealType *red,MagickRealType *green, - MagickRealType *blue) + const double brightness,double *red,double *green, + double *blue) { - MagickRealType + double f, h, p, @@ -1501,12 +1501,12 @@ static void HSBComposite(const double hue,const double saturation, /* Convert HSB to RGB colorspace. */ - assert(red != (MagickRealType *) NULL); - assert(green != (MagickRealType *) NULL); - assert(blue != (MagickRealType *) NULL); + assert(red != (double *) NULL); + assert(green != (double *) NULL); + assert(blue != (double *) NULL); if (saturation == 0.0) { - *red=(MagickRealType) QuantumRange*brightness; + *red=(double) QuantumRange*brightness; *green=(*red); *blue=(*red); return; @@ -1521,44 +1521,44 @@ static void HSBComposite(const double hue,const double saturation, case 0: default: { - *red=(MagickRealType) QuantumRange*brightness; - *green=(MagickRealType) QuantumRange*t; - *blue=(MagickRealType) QuantumRange*p; + *red=(double) QuantumRange*brightness; + *green=(double) QuantumRange*t; + *blue=(double) QuantumRange*p; break; } case 1: { - *red=(MagickRealType) QuantumRange*q; - *green=(MagickRealType) QuantumRange*brightness; - *blue=(MagickRealType) QuantumRange*p; + *red=(double) QuantumRange*q; + *green=(double) QuantumRange*brightness; + *blue=(double) QuantumRange*p; break; } case 2: { - *red=(MagickRealType) QuantumRange*p; - *green=(MagickRealType) QuantumRange*brightness; - *blue=(MagickRealType) QuantumRange*t; + *red=(double) QuantumRange*p; + *green=(double) QuantumRange*brightness; + *blue=(double) QuantumRange*t; break; } case 3: { - *red=(MagickRealType) QuantumRange*p; - *green=(MagickRealType) QuantumRange*q; - *blue=(MagickRealType) QuantumRange*brightness; + *red=(double) QuantumRange*p; + *green=(double) QuantumRange*q; + *blue=(double) QuantumRange*brightness; break; } case 4: { - *red=(MagickRealType) QuantumRange*t; - *green=(MagickRealType) QuantumRange*p; - *blue=(MagickRealType) QuantumRange*brightness; + *red=(double) QuantumRange*t; + *green=(double) QuantumRange*p; + *blue=(double) QuantumRange*brightness; break; } case 5: { - *red=(MagickRealType) QuantumRange*brightness; - *green=(MagickRealType) QuantumRange*p; - *blue=(MagickRealType) QuantumRange*q; + *red=(double) QuantumRange*brightness; + *green=(double) QuantumRange*p; + *blue=(double) QuantumRange*q; break; } } @@ -2560,6 +2560,11 @@ MagickExport MagickBooleanType CompositeImage(Image *image, } case ModulateCompositeOp: { + double + blue, + green, + red; + ssize_t offset; @@ -2572,8 +2577,10 @@ MagickExport MagickBooleanType CompositeImage(Image *image, &saturation,&brightness); brightness+=(0.01*percent_brightness*offset)/midpoint; saturation*=0.01*percent_saturation; - HSBComposite(hue,saturation,brightness,&composite.red, - &composite.green,&composite.blue); + HSBComposite(hue,saturation,brightness,&red,&green,&blue); + composite.red=red; + composite.green=green; + composite.blue=blue; break; } case HueCompositeOp: diff --git a/MagickCore/effect.c b/MagickCore/effect.c index 2d00e3095..87a80f79f 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -1263,7 +1263,7 @@ MagickExport Image *ConvolveImage(const Image *image, format[MaxTextExtent], *message; - register const double + register const MagickRealType *k; register ssize_t @@ -1348,7 +1348,7 @@ MagickExport Image *ConvolveImage(const Image *image, convolve_traits, traits; - register const double + register const MagickRealType *restrict k; register const Quantum @@ -1803,9 +1803,9 @@ MagickExport Image *EdgeImage(const Image *image,const double radius, ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); kernel_info->width=width; kernel_info->height=width; - kernel_info->values=(double *) AcquireAlignedMemory(kernel_info->width, - kernel_info->width*sizeof(*kernel_info->values)); - if (kernel_info->values == (double *) NULL) + kernel_info->values=(MagickRealType *) AcquireAlignedMemory( + kernel_info->width,kernel_info->width*sizeof(*kernel_info->values)); + if (kernel_info->values == (MagickRealType *) NULL) { kernel_info=DestroyKernelInfo(kernel_info); ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); @@ -1893,9 +1893,9 @@ MagickExport Image *EmbossImage(const Image *image,const double radius, ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); kernel_info->width=width; kernel_info->height=width; - kernel_info->values=(double *) AcquireAlignedMemory(kernel_info->width, - kernel_info->width*sizeof(*kernel_info->values)); - if (kernel_info->values == (double *) NULL) + kernel_info->values=(MagickRealType *) AcquireAlignedMemory( + kernel_info->width,kernel_info->width*sizeof(*kernel_info->values)); + if (kernel_info->values == (MagickRealType *) NULL) { kernel_info=DestroyKernelInfo(kernel_info); ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); @@ -1994,9 +1994,9 @@ MagickExport Image *GaussianBlurImage(const Image *image,const double radius, kernel_info->height=width; kernel_info->bias=bias; /* FUTURE: user bias on Gaussian Blur! non-sense */ kernel_info->signature=MagickSignature; - kernel_info->values=(double *) AcquireAlignedMemory(kernel_info->width, - kernel_info->width*sizeof(*kernel_info->values)); - if (kernel_info->values == (double *) NULL) + kernel_info->values=(MagickRealType *) AcquireAlignedMemory( + kernel_info->width,kernel_info->width*sizeof(*kernel_info->values)); + if (kernel_info->values == (MagickRealType *) NULL) { kernel_info=DestroyKernelInfo(kernel_info); ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); @@ -3683,9 +3683,9 @@ MagickExport Image *SharpenImage(const Image *image,const double radius, kernel_info->height=width; kernel_info->bias=bias; /* FUTURE: user bias - non-sensical! */ kernel_info->signature=MagickSignature; - kernel_info->values=(double *) AcquireAlignedMemory(kernel_info->width, - kernel_info->width*sizeof(*kernel_info->values)); - if (kernel_info->values == (double *) NULL) + kernel_info->values=(MagickRealType *) AcquireAlignedMemory( + kernel_info->width,kernel_info->width*sizeof(*kernel_info->values)); + if (kernel_info->values == (MagickRealType *) NULL) { kernel_info=DestroyKernelInfo(kernel_info); ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); diff --git a/MagickCore/magick-type.h b/MagickCore/magick-type.h index 0a70fb8c5..f6b4483b4 100644 --- a/MagickCore/magick-type.h +++ b/MagickCore/magick-type.h @@ -41,7 +41,11 @@ extern "C" { #define MaxColormapSize 256UL #define MaxMap 255UL +#if defined __arm__ || defined __thumb__ +typedef float MagickRealType; +#else typedef double MagickRealType; +#endif #if defined(MAGICKCORE_HDRI_SUPPORT) typedef float Quantum; #define QuantumRange 255.0 @@ -56,7 +60,11 @@ typedef unsigned char Quantum; #define MaxColormapSize 65536UL #define MaxMap 65535UL +#if defined __arm__ || defined __thumb__ +typedef float MagickRealType; +#else typedef double MagickRealType; +#endif #if defined(MAGICKCORE_HDRI_SUPPORT) typedef float Quantum; #define QuantumRange 65535.0 diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c index d8694c045..49d3aae8b 100644 --- a/MagickCore/morphology.c +++ b/MagickCore/morphology.c @@ -314,9 +314,9 @@ static KernelInfo *ParseKernelArray(const char *kernel_string) } /* Read in the kernel values from rest of input string argument */ - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); kernel->minimum = +MagickHuge; kernel->maximum = -MagickHuge; @@ -1028,9 +1028,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, { kernel->height = kernel->width = (size_t) 1; kernel->x = kernel->y = (ssize_t) 0; - kernel->values=(double *) AcquireAlignedMemory(1, + kernel->values=(MagickRealType *) AcquireAlignedMemory(1, sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); kernel->maximum = kernel->values[0] = args->rho; break; @@ -1052,9 +1052,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = GetOptimalKernelWidth2D(args->rho,sigma2); kernel->height = kernel->width; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); /* WARNING: The following generates a 'sampled gaussian' kernel. @@ -1143,9 +1143,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->x = (ssize_t) (kernel->width-1)/2; kernel->y = 0; kernel->negative_range = kernel->positive_range = 0.0; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); #if 1 @@ -1227,9 +1227,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->x = kernel->y = 0; kernel->height = 1; kernel->negative_range = kernel->positive_range = 0.0; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); /* A comet blur is half a 1D gaussian curve, so that the object is @@ -1498,9 +1498,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = ((size_t)args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); /* set all kernel values within diamond area to scale given */ @@ -1539,9 +1539,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->y = (ssize_t) args->psi; scale = 1.0; } - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); /* set all kernel values to scale given */ @@ -1560,9 +1560,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = ((size_t)args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); for ( i=0, v=-kernel->y; v <= (ssize_t)kernel->y; v++) @@ -1586,9 +1586,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = (size_t)fabs(args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); for ( i=0, v=-kernel->y; v <= (ssize_t)kernel->y; v++) @@ -1608,9 +1608,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = ((size_t)args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); /* set all kernel values along axises to given scale */ @@ -1629,9 +1629,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = ((size_t)args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); /* set all kernel values along axises to given scale */ @@ -1670,9 +1670,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->height = kernel->width; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); /* set a ring of points of 'scale' ( 0.0 for PeaksKernel ) */ @@ -2040,9 +2040,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = ((size_t)args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); for ( i=0, v=-kernel->y; v <= (ssize_t)kernel->y; v++) @@ -2060,9 +2060,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = ((size_t)args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); for ( i=0, v=-kernel->y; v <= (ssize_t)kernel->y; v++) @@ -2080,9 +2080,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = ((size_t)args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); for ( i=0, v=-kernel->y; v <= (ssize_t)kernel->y; v++) @@ -2105,9 +2105,9 @@ MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type, kernel->width = kernel->height = ((size_t)args->rho)*2+1; kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2; - kernel->values=(double *) AcquireAlignedMemory(kernel->width, + kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (kernel->values == (double *) NULL) + if (kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(kernel)); for ( i=0, v=-kernel->y; v <= (ssize_t)kernel->y; v++) @@ -2170,9 +2170,9 @@ MagickExport KernelInfo *CloneKernelInfo(const KernelInfo *kernel) *new_kernel=(*kernel); /* copy values in structure */ /* replace the values with a copy of the values */ - new_kernel->values=(double *) AcquireAlignedMemory(kernel->width, + new_kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width, kernel->height*sizeof(*kernel->values)); - if (new_kernel->values == (double *) NULL) + if (new_kernel->values == (MagickRealType *) NULL) return(DestroyKernelInfo(new_kernel)); for (i=0; i < (ssize_t) (kernel->width*kernel->height); i++) new_kernel->values[i]=kernel->values[i]; @@ -2215,7 +2215,7 @@ MagickExport KernelInfo *DestroyKernelInfo(KernelInfo *kernel) assert(kernel != (KernelInfo *) NULL); if ( kernel->next != (KernelInfo *) NULL ) kernel->next=DestroyKernelInfo(kernel->next); - kernel->values=(double *) RelinquishAlignedMemory(kernel->values); + kernel->values=(MagickRealType *) RelinquishAlignedMemory(kernel->values); kernel=(KernelInfo *) RelinquishMagickMemory(kernel); return(kernel); } @@ -2621,7 +2621,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image, register ssize_t v; - register const double + register const MagickRealType *restrict k; register const Quantum @@ -2796,7 +2796,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image, register ssize_t u; - register const double + register const MagickRealType *restrict k; register const Quantum @@ -3395,7 +3395,7 @@ static ssize_t MorphologyPrimitiveDirect(Image *image, register ssize_t u; - register const double + register const MagickRealType *restrict k; register const Quantum @@ -3579,7 +3579,7 @@ static ssize_t MorphologyPrimitiveDirect(Image *image, register ssize_t u; - register const double + register const MagickRealType *restrict k; register const Quantum @@ -4463,10 +4463,15 @@ static void RotateKernelInfo(KernelInfo *kernel, double angle) * Basically all that is needed is a reversal of the kernel data! * And a reflection of the origon */ - size_t - i,j; - register double - *k,t; + double + t; + + register MagickRealType + *k; + + ssize_t + i, + j; k=kernel->values; for ( i=0, j=kernel->width*kernel->height-1; i - +