]> granicus.if.org Git - imagemagick/commitdiff
lint-free CubicBC computation
authornicolas <nicolas@git.imagemagick.org>
Sun, 24 Oct 2010 18:10:45 +0000 (18:10 +0000)
committernicolas <nicolas@git.imagemagick.org>
Sun, 24 Oct 2010 18:10:45 +0000 (18:10 +0000)
config/configure.xml
magick/resize.c
magick/version.h

index d2ebdb24f5fdc91d8250132434e69afd8e062c3c..9f07ae2b230f7bca0338a939b674c6bc6206fd1d 100644 (file)
@@ -9,7 +9,7 @@
   <configure name="NAME" value="ImageMagick"/>
   <configure name="LIB_VERSION" value="0x665"/>
   <configure name="LIB_VERSION_NUMBER" value="6,6,5,3"/>
-  <configure name="RELEASE_DATE" value="2010-10-23"/>
+  <configure name="RELEASE_DATE" value="2010-10-24"/>
   <configure name="CONFIGURE" value="./configure "/>
   <configure name="PREFIX" value="/usr/local"/>
   <configure name="EXEC-PREFIX" value="/usr/local"/>
index b46d17b415ecb7b05a392c2a0695ba8ea072d910..ede77d9b73276df08a374a22b1b931a46ce19ba8 100644 (file)
@@ -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.
index ee40f5a0d112cc840d8fc0b1189a55a9c1728429..0e3467db3eff19f818935789c68f5b4e15077882 100644 (file)
@@ -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)