% August 1996 %
% %
% %
-% Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2011 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 %
r,
v;
- register long
+ register ssize_t
i;
/*
*blue=ClampToQuantum((MagickRealType) QuantumRange*v);
return;
}
- i=(long) floor(6.0*hue);
+ i=(ssize_t) floor(6.0*hue);
f=6.0*hue-i;
if ((i & 0x01) != 0)
f=1.0-f;
MagickExport void ConvertRGBToHWB(const Quantum red,const Quantum green,
const Quantum blue,double *hue,double *whiteness,double *blackness)
{
+ long
+ i;
+
MagickRealType
f,
v,
w;
- register long
- i;
-
/*
Convert RGB to HWB colorspace.
*/
alpha=1.0;
beta=GetPseudoRandomValue(random_info);
gamma=sqrt(-2.0*log(alpha));
- sigma=gamma*cos(2.0*MagickPI*beta);
- tau=gamma*sin(2.0*MagickPI*beta);
+ sigma=gamma*cos((double) (2.0*MagickPI*beta));
+ tau=gamma*sin((double) (2.0*MagickPI*beta));
noise=(double) pixel+sqrt((double) pixel)*SigmaGaussian*sigma+
TauGaussian*tau;
break;
sigma=sqrt(-2.0*log(alpha));
beta=GetPseudoRandomValue(random_info);
noise=(double) pixel+pixel*SigmaMultiplicativeGaussian*sigma/2.0*
- cos((2.0*MagickPI*beta));
+ cos((double) (2.0*MagickPI*beta));
break;
}
case ImpulseNoise:
double
poisson;
- register long
+ register ssize_t
i;
poisson=exp(-SigmaPoisson*ScaleQuantumToChar(pixel));
%
% The format of the GetOptimalKernelWidth method is:
%
-% unsigned long GetOptimalKernelWidth(const double radius,
+% size_t GetOptimalKernelWidth(const double radius,
% const double sigma)
%
% A description of each parameter follows:
% o sigma: the standard deviation of the Gaussian, in pixels.
%
*/
-MagickExport unsigned long GetOptimalKernelWidth1D(double radius, double sigma)
+MagickExport size_t GetOptimalKernelWidth1D(const double radius,
+ const double sigma)
{
- MagickRealType
+ double
+ alpha,
+ beta,
+ gamma,
normalize,
- value,
- A,B;
+ value;
- long
- j;
-
- register long
+ register ssize_t
i;
- unsigned long
+ size_t
width;
+ ssize_t
+ j;
+
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
if (radius > MagickEpsilon)
- return((unsigned long) (2.0*ceil(radius)+1.0));
- sigma = fabs(sigma);
- if (sigma <= MagickEpsilon)
+ return((size_t) (2.0*ceil(radius)+1.0));
+ gamma=fabs(sigma);
+ if (gamma <= MagickEpsilon)
return(3UL);
- A = 1.0/(2.0*sigma*sigma);
- B = 1.0/(MagickSQ2PI*sigma);
+ alpha=1.0/(2.0*gamma*gamma);
+ beta=(double) (1.0/(MagickSQ2PI*gamma));
for (width=5; ; )
{
normalize=0.0;
- j=(long) width/2;
+ j=(ssize_t) width/2;
for (i=(-j); i <= j; i++)
- normalize+=exp(-((double)(i*i))*A)*B;
- value=exp(-((double)(j*j))*A)*B / normalize;
+ normalize+=exp(-((double) (i*i))*alpha)*beta;
+ value=exp(-((double) (j*j))*alpha)*beta/normalize;
if ((value < QuantumScale) || (value < MagickEpsilon))
break;
width+=2;
}
- return((unsigned long) (width-2));
+ return((size_t) (width-2));
}
-MagickExport unsigned long GetOptimalKernelWidth2D(double radius, double sigma)
+MagickExport size_t GetOptimalKernelWidth2D(const double radius,
+ const double sigma)
{
double
+ alpha,
+ beta,
+ gamma,
normalize,
- value,
- A,B;
+ value;
- long
+ size_t
+ width;
+
+ ssize_t
j,
u,
v;
- unsigned long
- width;
-
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
if (radius > MagickEpsilon)
- return((unsigned long) (2.0*ceil(radius)+1.0));
- sigma = fabs(sigma);
- if (sigma <= MagickEpsilon)
+ return((size_t) (2.0*ceil(radius)+1.0));
+ gamma=fabs(sigma);
+ if (gamma <= MagickEpsilon)
return(3UL);
- A = 1.0/(2.0*sigma*sigma);
- B = 1.0/(Magick2PI*sigma*sigma);
+ alpha=1.0/(2.0*gamma*gamma);
+ beta=(double) (1.0/(Magick2PI*gamma*gamma));
for (width=5; ; )
{
normalize=0.0;
- j=(long) width/2;
+ j=(ssize_t) width/2;
for (v=(-j); v <= j; v++)
for (u=(-j); u <= j; u++)
- normalize+=exp(-((double)(u*u+v*v))*A)*B;
- value=exp(-((double)(j*j))*A)*B / normalize;
+ normalize+=exp(-((double) (u*u+v*v))*alpha)*beta;
+ value=exp(-((double) (j*j))*alpha)*beta/normalize;
if ((value < QuantumScale) || (value < MagickEpsilon))
break;
width+=2;
}
- return((unsigned long) (width-2));
+ return((size_t) (width-2));
}
-MagickExport unsigned long GetOptimalKernelWidth(const double radius,
+MagickExport size_t GetOptimalKernelWidth(const double radius,
const double sigma)
{
return(GetOptimalKernelWidth1D(radius,sigma));