]> granicus.if.org Git - imagemagick/commitdiff
Fix Kaiser Resize filter
authoranthony <anthony@git.imagemagick.org>
Wed, 9 May 2012 07:27:02 +0000 (07:27 +0000)
committeranthony <anthony@git.imagemagick.org>
Wed, 9 May 2012 07:27:02 +0000 (07:27 +0000)
MagickCore/resize.c

index d6beccbef592c65258b214bb549042c24f11e0a2..4e19accd7db743d38bff5e0dc5ba1054fa77804f 100644 (file)
@@ -953,7 +953,8 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image,
   */
 
   /* User Gaussian Sigma Override - no support change */
-  if (resize_filter->filter == Gaussian) {
+  if ((resize_filter->filter == Gaussian) ||
+      (resize_filter->window == Gaussian) ) {
     value=0.5;    /* guassian sigma default, half pixel */
     artifact=GetImageArtifact(image,"filter:sigma");
     if (artifact != (const char *) NULL)
@@ -961,15 +962,15 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image,
     /* Define coefficents for Gaussian */
     resize_filter->coefficient[0]=value;                 /* note sigma too */
     resize_filter->coefficient[1]=1.0/(2.0*value*value); /* sigma scaling */
-    resize_filter->coefficient[2]=(MagickRealType)
-      (1.0/(Magick2PI*value*value));
+    resize_filter->coefficient[2]=(MagickRealType) (1.0/(Magick2PI*value*value));
        /* normalization - not actually needed or used! */
     if ( value > 0.5 )
       resize_filter->support *= value/0.5;  /* increase support */
   }
 
   /* User Kaiser Alpha Override - no support change */
-  if (resize_filter->filter == Kaiser) {
+  if ((resize_filter->filter == Kaiser) ||
+      (resize_filter->window == Kaiser) ) {
     value=6.5; /* default alpha value for Kaiser bessel windowing function */
     artifact=GetImageArtifact(image,"filter:alpha");
     if (artifact != (const char *) NULL)
@@ -1030,8 +1031,8 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image,
   */
   B=0.0;
   C=0.0;
-  if ((filters[filter_type].function == CubicBC) ||
-      (filters[window_type].function == CubicBC))
+  if ((resize_filter->filter == CubicBC) ||
+      (resize_filter->window == CubicBC) )
     {
       B=filters[filter_type].B;
       C=filters[filter_type].C;
@@ -1108,17 +1109,17 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image,
         (void) FormatLocaleFile(stdout,"# filter = %s\n",
              CommandOptionToMnemonic(MagickFilterOptions,filter_type));
         (void) FormatLocaleFile(stdout,"# window = %s\n",
-             CommandOptionToMnemonic(MagickFilterOptions, window_type));
+             CommandOptionToMnemonic(MagickFilterOptions,window_type));
         (void) FormatLocaleFile(stdout,"# support = %.*g\n",
              GetMagickPrecision(),(double) resize_filter->support);
         (void) FormatLocaleFile(stdout,"# win-support = %.*g\n",
              GetMagickPrecision(),(double) resize_filter->window_support);
         (void) FormatLocaleFile(stdout,"# scale_blur = %.*g\n",
              GetMagickPrecision(), (double)resize_filter->blur);
-        if ( filter_type == GaussianFilter )
+        if ( filter_type == GaussianFilter || window_type == GaussianFilter )
           (void) FormatLocaleFile(stdout,"# gaussian_sigma = %.*g\n",
                GetMagickPrecision(), (double)resize_filter->coefficient[0]);
-        if ( filter_type == KaiserFilter )
+        if ( filter_type == KaiserFilter || window_type == KaiserFilter )
           (void) FormatLocaleFile(stdout,"# kaiser_alpha = %.*g\n",
                GetMagickPrecision(), (double)resize_filter->coefficient[0]);
         (void) FormatLocaleFile(stdout,"# practical_support = %.*g\n",