From: nicolas Date: Sun, 24 Oct 2010 18:10:45 +0000 (+0000) Subject: lint-free CubicBC computation X-Git-Tag: 7.0.1-0~8636 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c6bac3b27fd651e9a00d96f03583bd945224344e;p=imagemagick lint-free CubicBC computation --- diff --git a/config/configure.xml b/config/configure.xml index d2ebdb24f..9f07ae2b2 100644 --- a/config/configure.xml +++ b/config/configure.xml @@ -9,7 +9,7 @@ - + diff --git a/magick/resize.c b/magick/resize.c index b46d17b41..ede77d9b7 100644 --- a/magick/resize.c +++ b/magick/resize.c @@ -221,9 +221,12 @@ static MagickRealType CubicBC(const MagickRealType x, Q0 + Q1*x + Q2*x^2 + Q3*x^3 1 <= x <= 2 which ensures function is continuous in value and derivative (slope). + + (This implies that coeff[1] is always zero. It is omitted in the + computation below.) */ if (x < 1.0) - return(resize_filter->coeff[0]+x*(resize_filter->coeff[1]+x* + return(resize_filter->coeff[0]+x*(x* (resize_filter->coeff[2]+x*resize_filter->coeff[3]))); if (x < 2.0) return(resize_filter->coeff[4]+x*(resize_filter->coeff[5]+x* @@ -1035,16 +1038,16 @@ MagickExport ResizeFilter *AcquireResizeFilter(const Image *image, B=1.0-2.0*C; /* Calculate B as if it is a Keys cubic filter. */ } } - /* Convert B,C values into Cubic Coefficents. See CubicBC(). */ - resize_filter->coeff[0]=(6.0-2.0*B)/6.0; - resize_filter->coeff[1]=0.0; - resize_filter->coeff[2]=(-18.0+12.0*B+6.0*C)/6.0; - resize_filter->coeff[3]=(12.0-9.0*B-6.0*C)/6.0; - resize_filter->coeff[4]=(8.0*B+24.0*C)/6.0; - resize_filter->coeff[5]=(-12.0*B-48.0*C)/6.0; - resize_filter->coeff[6]=(6.0*B+30.0*C)/6.0; - resize_filter->coeff[7]=(-B-6.0*C)/6.0; - } + /* Convert B,C values into Cubic Coefficents. See CubicBC(). */ + resize_filter->coeff[0]=1.0-(1.0/3.0)*B; + resize_filter->coeff[1]=0.0; + resize_filter->coeff[2]=-3.0+2.0*B+C; + resize_filter->coeff[3]=2.0-1.5*B-C; + resize_filter->coeff[4]=(4.0/3.0)*B+4.0*C; + resize_filter->coeff[5]=-2.0*B-8.0*C; + resize_filter->coeff[6]=B+5.0*C; + resize_filter->coeff[7]=(-1.0/6.0)*B-C; + } /* Expert Option Request for verbose details of the resulting filter. diff --git a/magick/version.h b/magick/version.h index ee40f5a0d..0e3467db3 100644 --- a/magick/version.h +++ b/magick/version.h @@ -33,7 +33,7 @@ extern "C" { #define MagickLibAddendum "-3" #define MagickLibInterface 4 #define MagickLibMinInterface 4 -#define MagickReleaseDate "2010-10-23" +#define MagickReleaseDate "2010-10-24" #define MagickChangeDate "20101022" #define MagickAuthoritativeURL "http://www.imagemagick.org" #if defined(MAGICKCORE_OPENMP_SUPPORT)