*edge_view,
*image_view;
- double
- **kernel,
- normalize;
-
Image
*blur_image,
*edge_image,
MagickOffsetType
progress;
+ MagickRealType
+ **kernel,
+ normalize;
+
register ssize_t
i;
Create a set of kernels from maximum (radius,sigma) to minimum.
*/
width=GetOptimalKernelWidth2D(radius,sigma);
- kernel=(double **) AcquireAlignedMemory((size_t) width,sizeof(*kernel));
- if (kernel == (double **) NULL)
+ kernel=(MagickRealType **) AcquireAlignedMemory((size_t) width,
+ sizeof(*kernel));
+ if (kernel == (MagickRealType **) NULL)
{
edge_image=DestroyImage(edge_image);
blur_image=DestroyImage(blur_image);
(void) ResetMagickMemory(kernel,0,(size_t) width*sizeof(*kernel));
for (i=0; i < (ssize_t) width; i+=2)
{
- kernel[i]=(double *) AcquireAlignedMemory((size_t) (width-i),(width-i)*
- sizeof(**kernel));
- if (kernel[i] == (double *) NULL)
+ kernel[i]=(MagickRealType *) AcquireAlignedMemory((size_t) (width-i),
+ (width-i)*sizeof(**kernel));
+ if (kernel[i] == (MagickRealType *) NULL)
break;
normalize=0.0;
j=(ssize_t) (width-i)/2;
{
for (u=(-j); u <= j; u++)
{
- kernel[i][k]=(double) (exp(-((double) u*u+v*v)/(2.0*MagickSigma*
+ kernel[i][k]=(MagickRealType) (exp(-((double) u*u+v*v)/(2.0*MagickSigma*
MagickSigma))/(2.0*MagickPI*MagickSigma*MagickSigma));
normalize+=kernel[i][k];
k++;
if (i < (ssize_t) width)
{
for (i-=2; i >= 0; i-=2)
- kernel[i]=(double *) RelinquishAlignedMemory(kernel[i]);
- kernel=(double **) RelinquishAlignedMemory(kernel);
+ kernel[i]=(MagickRealType *) RelinquishAlignedMemory(kernel[i]);
+ kernel=(MagickRealType **) RelinquishAlignedMemory(kernel);
edge_image=DestroyImage(edge_image);
blur_image=DestroyImage(blur_image);
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
blur_traits,
traits;
- register const double
+ register const MagickRealType
*restrict k;
register const Quantum
image_view=DestroyCacheView(image_view);
edge_image=DestroyImage(edge_image);
for (i=0; i < (ssize_t) width; i+=2)
- kernel[i]=(double *) RelinquishAlignedMemory(kernel[i]);
- kernel=(double **) RelinquishAlignedMemory(kernel);
+ kernel[i]=(MagickRealType *) RelinquishAlignedMemory(kernel[i]);
+ kernel=(MagickRealType **) RelinquishAlignedMemory(kernel);
if (status == MagickFalse)
blur_image=DestroyImage(blur_image);
return(blur_image);
*edge_view,
*image_view;
- double
- **kernel,
- normalize;
-
Image
*sharp_image,
*edge_image,
MagickOffsetType
progress;
+ MagickRealType
+ **kernel,
+ normalize;
+
register ssize_t
i;
Create a set of kernels from maximum (radius,sigma) to minimum.
*/
width=GetOptimalKernelWidth2D(radius,sigma);
- kernel=(double **) AcquireAlignedMemory((size_t) width,sizeof(*kernel));
- if (kernel == (double **) NULL)
+ kernel=(MagickRealType **) AcquireAlignedMemory((size_t) width,
+ sizeof(*kernel));
+ if (kernel == (MagickRealType **) NULL)
{
edge_image=DestroyImage(edge_image);
sharp_image=DestroyImage(sharp_image);
(void) ResetMagickMemory(kernel,0,(size_t) width*sizeof(*kernel));
for (i=0; i < (ssize_t) width; i+=2)
{
- kernel[i]=(double *) AcquireAlignedMemory((size_t) (width-i),(width-i)*
- sizeof(**kernel));
+ kernel[i]=(MagickRealType *) AcquireAlignedMemory((size_t) (width-i),
+ (width-i)*sizeof(**kernel));
if (kernel[i] == (double *) NULL)
break;
normalize=0.0;
{
for (u=(-j); u <= j; u++)
{
- kernel[i][k]=(double) (-exp(-((double) u*u+v*v)/(2.0*MagickSigma*
- MagickSigma))/(2.0*MagickPI*MagickSigma*MagickSigma));
+ kernel[i][k]=(MagickRealType) (-exp(-((double) u*u+v*v)/(2.0*
+ MagickSigma*MagickSigma))/(2.0*MagickPI*MagickSigma*MagickSigma));
normalize+=kernel[i][k];
k++;
}
if (i < (ssize_t) width)
{
for (i-=2; i >= 0; i-=2)
- kernel[i]=(double *) RelinquishAlignedMemory(kernel[i]);
- kernel=(double **) RelinquishAlignedMemory(kernel);
+ kernel[i]=(MagickRealType *) RelinquishAlignedMemory(kernel[i]);
+ kernel=(MagickRealType **) RelinquishAlignedMemory(kernel);
edge_image=DestroyImage(edge_image);
sharp_image=DestroyImage(sharp_image);
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
sharp_traits,
traits;
- register const double
+ register const MagickRealType
*restrict k;
register const Quantum
image_view=DestroyCacheView(image_view);
edge_image=DestroyImage(edge_image);
for (i=0; i < (ssize_t) width; i+=2)
- kernel[i]=(double *) RelinquishAlignedMemory(kernel[i]);
- kernel=(double **) RelinquishAlignedMemory(kernel);
+ kernel[i]=(MagickRealType *) RelinquishAlignedMemory(kernel[i]);
+ kernel=(MagickRealType **) RelinquishAlignedMemory(kernel);
if (status == MagickFalse)
sharp_image=DestroyImage(sharp_image);
return(sharp_image);
%
*/
-static double *GetBlurKernel(const size_t width,const double sigma)
+static MagickRealType *GetBlurKernel(const size_t width,const double sigma)
{
- double
+ MagickRealType
*kernel,
normalize;
Generate a 1-D convolution kernel.
*/
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
- kernel=(double *) AcquireAlignedMemory((size_t) width,sizeof(*kernel));
- if (kernel == (double *) NULL)
+ kernel=(MagickRealType *) AcquireAlignedMemory((size_t) width,
+ sizeof(*kernel));
+ if (kernel == (MagickRealType *) NULL)
return(0);
normalize=0.0;
j=(ssize_t) width/2;
i=0;
for (k=(-j); k <= j; k++)
{
- kernel[i]=(double) (exp(-((double) k*k)/(2.0*MagickSigma*MagickSigma))/
- (MagickSQ2PI*MagickSigma));
+ kernel[i]=(MagickRealType) (exp(-((double) k*k)/(2.0*MagickSigma*
+ MagickSigma))/(MagickSQ2PI*MagickSigma));
normalize+=kernel[i];
i++;
}
*blur_view,
*image_view;
- double
- *kernel;
-
Image
*blur_image;
MagickOffsetType
progress;
+ MagickRealType
+ *kernel;
+
register ssize_t
i;
}
width=GetOptimalKernelWidth1D(radius,sigma);
kernel=GetBlurKernel(width,sigma);
- if (kernel == (double *) NULL)
+ if (kernel == (MagickRealType *) NULL)
{
blur_image=DestroyImage(blur_image);
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
format[MaxTextExtent],
*message;
- register const double
+ register const MagickRealType
*k;
(void) LogMagickEvent(TransformEvent,GetMagickModule(),
*message='\0';
(void) FormatLocaleString(format,MaxTextExtent,"%.20g: ",(double) i);
(void) ConcatenateString(&message,format);
- (void) FormatLocaleString(format,MaxTextExtent,"%g ",*k++);
+ (void) FormatLocaleString(format,MaxTextExtent,"%g ",(double) *k++);
(void) ConcatenateString(&message,format);
(void) LogMagickEvent(TransformEvent,GetMagickModule(),"%s",message);
}
blur_traits,
traits;
- register const double
+ register const MagickRealType
*restrict k;
register const Quantum
blur_traits,
traits;
- register const double
+ register const MagickRealType
*restrict k;
register const Quantum
}
blur_view=DestroyCacheView(blur_view);
image_view=DestroyCacheView(image_view);
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
blur_image->type=image->type;
if (status == MagickFalse)
blur_image=DestroyImage(blur_image);
%
*/
-static double *GetMotionBlurKernel(const size_t width,const double sigma)
+static MagickRealType *GetMotionBlurKernel(const size_t width,
+ const double sigma)
{
- double
+ MagickRealType
*kernel,
normalize;
Generate a 1-D convolution kernel.
*/
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
- kernel=(double *) AcquireAlignedMemory((size_t) width,sizeof(*kernel));
- if (kernel == (double *) NULL)
+ kernel=(MagickRealType *) AcquireAlignedMemory((size_t) width,
+ sizeof(*kernel));
+ if (kernel == (MagickRealType *) NULL)
return(kernel);
normalize=0.0;
for (i=0; i < (ssize_t) width; i++)
{
- kernel[i]=(double) (exp((-((double) i*i)/(double) (2.0*MagickSigma*
+ kernel[i]=(MagickRealType) (exp((-((double) i*i)/(double) (2.0*MagickSigma*
MagickSigma)))/(MagickSQ2PI*MagickSigma));
normalize+=kernel[i];
}
*image_view,
*motion_view;
- double
- *kernel;
-
Image
*blur_image;
MagickOffsetType
progress;
+ MagickRealType
+ *kernel;
+
OffsetInfo
*offset;
assert(exception != (ExceptionInfo *) NULL);
width=GetOptimalKernelWidth1D(radius,sigma);
kernel=GetMotionBlurKernel(width,sigma);
- if (kernel == (double *) NULL)
+ if (kernel == (MagickRealType *) NULL)
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
offset=(OffsetInfo *) AcquireQuantumMemory(width,sizeof(*offset));
if (offset == (OffsetInfo *) NULL)
{
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
}
blur_image=CloneImage(image,image->columns,image->rows,MagickTrue,exception);
if (blur_image == (Image *) NULL)
{
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
offset=(OffsetInfo *) RelinquishMagickMemory(offset);
return((Image *) NULL);
}
if (SetImageStorageClass(blur_image,DirectClass,exception) == MagickFalse)
{
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
offset=(OffsetInfo *) RelinquishMagickMemory(offset);
blur_image=DestroyImage(blur_image);
return((Image *) NULL);
register const Quantum
*restrict r;
- register double
+ register MagickRealType
*restrict k;
register ssize_t
blur_view=DestroyCacheView(blur_view);
motion_view=DestroyCacheView(motion_view);
image_view=DestroyCacheView(image_view);
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
offset=(OffsetInfo *) RelinquishMagickMemory(offset);
if (status == MagickFalse)
blur_image=DestroyImage(blur_image);
*image_view,
*luminance_view;
- double
- *kernel;
-
Image
*blur_image,
*luminance_image;
MagickOffsetType
progress;
+ MagickRealType
+ *kernel;
+
register ssize_t
i;
assert(exception != (ExceptionInfo *) NULL);
assert(exception->signature == MagickSignature);
width=GetOptimalKernelWidth1D(radius,sigma);
- kernel=(double *) AcquireAlignedMemory((size_t) width,width*sizeof(*kernel));
- if (kernel == (double *) NULL)
+ kernel=(MagickRealType *) AcquireAlignedMemory((size_t) width,width*
+ sizeof(*kernel));
+ if (kernel == (MagickRealType *) NULL)
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
j=(ssize_t) width/2;
i=0;
for (v=(-j); v <= j; v++)
{
for (u=(-j); u <= j; u++)
- kernel[i++]=(double) (exp(-((double) u*u+v*v)/(2.0*MagickSigma*
+ kernel[i++]=(MagickRealType) (exp(-((double) u*u+v*v)/(2.0*MagickSigma*
MagickSigma))/(2.0*MagickPI*MagickSigma*MagickSigma));
}
if (image->debug != MagickFalse)
format[MaxTextExtent],
*message;
- register const double
+ register const MagickRealType
*k;
ssize_t
(void) ConcatenateString(&message,format);
for (u=0; u < (ssize_t) width; u++)
{
- (void) FormatLocaleString(format,MaxTextExtent,"%+f ",*k++);
+ (void) FormatLocaleString(format,MaxTextExtent,"%+f ",(double) *k++);
(void) ConcatenateString(&message,format);
}
(void) LogMagickEvent(TransformEvent,GetMagickModule(),"%s",message);
if (SetImageStorageClass(blur_image,DirectClass,exception) == MagickFalse)
{
blur_image=DestroyImage(blur_image);
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
return((Image *) NULL);
}
luminance_image=CloneImage(image,0,0,MagickTrue,exception);
if (luminance_image == (Image *) NULL)
{
blur_image=DestroyImage(blur_image);
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
return((Image *) NULL);
}
status=TransformImageColorspace(luminance_image,GRAYColorspace,exception);
{
luminance_image=DestroyImage(luminance_image);
blur_image=DestroyImage(blur_image);
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
return((Image *) NULL);
}
/*
blur_traits,
traits;
- register const double
+ register const MagickRealType
*restrict k;
register const Quantum
blur_view=DestroyCacheView(blur_view);
image_view=DestroyCacheView(image_view);
luminance_image=DestroyImage(luminance_image);
- kernel=(double *) RelinquishAlignedMemory(kernel);
+ kernel=(MagickRealType *) RelinquishAlignedMemory(kernel);
if (status == MagickFalse)
blur_image=DestroyImage(blur_image);
return(blur_image);
%
% The format of the StringToArrayOfDoubles method is:
%
-% double *StringToArrayOfDoubles(const char *string,
-% size_t *count, ExceptionInfo *exception)
+% double *StringToArrayOfDoubles(const char *string,size_t *count,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o exception: return 'memory failure' exceptions
%
*/
-MagickExport double *StringToArrayOfDoubles(const char *string,
- ssize_t *count, ExceptionInfo *exception)
+MagickExport double *StringToArrayOfDoubles(const char *string,ssize_t *count,
+ ExceptionInfo *exception)
{
- const char
- *p;
-
char
*q;
+ const char
+ *p;
+
double
*array;
register ssize_t
i;
- /* Determine count of values, and check syntax */
+ /*
+ Determine count of values, and check syntax.
+ */
*count=0;
- p=string;
i=0;
- while( *p != '\0' )
+ p=string;
+ while (*p != '\0')
{
- (void) StringToDouble(p, &q); /* get value - ignores leading space */
- if (p == q) return((double *)NULL); /* no value found */
- p=q; i++; /* inc value count */
- while ( isspace((int)*p) ) p++; /* skip spaces */
- if ( *p == ',' ) p++; /* skip comma */
- while ( isspace((int)*p) ) p++; /* and more spaces */
+ (void) StringToDouble(p,&q); /* get value - ignores leading space */
+ if (p == q)
+ return((double *) NULL); /* no value found */
+ p=q;
+ i++; /* increment value count */
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++; /* skip spaces */
+ if (*p == ',')
+ p++; /* skip comma */
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++; /* and more spaces */
}
-
- /* Allocate floating point argument list */
+ /*
+ Allocate floating point argument list.
+ */
*count=i;
- array=(double *) AcquireQuantumMemory(i,sizeof(*array));
- if (array == (double *) NULL) {
+ array=(double *) AcquireQuantumMemory((size_t) i,sizeof(*array));
+ if (array == (double *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
- (void) ThrowMagickException(exception,GetMagickModule(),
- ResourceLimitFatalError,"MemoryAllocationFailed"," ");
- return((double *)NULL);
- }
-
- /* Fill in the floating point values */
- p=string;
+ /*
+ Fill in the floating point values.
+ */
i=0;
- while( *p != '\0' && i < *count ) {
+ p=string;
+ while ((*p != '\0') && (i < *count))
+ {
array[i++]=StringToDouble(p,&q);
p=q;
- while ( isspace((int)*p) || *p == ',' ) p++;
+ while ((isspace((int) ((unsigned char) *p)) != 0) || (*p == ','))
+ p++;
}
-
return(array);
}
\f