From: Cristy Date: Sat, 29 Jul 2017 16:19:38 +0000 (-0400) Subject: https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416 X-Git-Tag: 7.0.6-5~24 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=877ef3fc8bd4da22c3ddd6ca128befe227208dd7;p=imagemagick https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416 --- diff --git a/MagickCore/paint.c b/MagickCore/paint.c index 975ca2fbc..78e5fffcf 100644 --- a/MagickCore/paint.c +++ b/MagickCore/paint.c @@ -547,43 +547,46 @@ MagickExport MagickBooleanType GradientImage(Image *image, */ sine=sin((double) DegreesToRadians(gradient->angle-90.0)); cosine=cos((double) DegreesToRadians(gradient->angle-90.0)); - distance=fabs((double) image->columns*cosine)+ - fabs((double) image->rows*sine); - gradient->gradient_vector.x1=0.5*(image->columns-distance*cosine); - gradient->gradient_vector.y1=0.5*(image->rows-distance*sine); - gradient->gradient_vector.x2=0.5*(image->columns+distance*cosine); - gradient->gradient_vector.y2=0.5*(image->rows+distance*sine); + distance=fabs((double) (image->columns-1.0)*cosine)+ + fabs((double) (image->rows-1.0)*sine); + gradient->gradient_vector.x1=0.5*((image->columns-1.0)-distance*cosine); + gradient->gradient_vector.y1=0.5*((image->rows-1.0)-distance*sine); + gradient->gradient_vector.x2=0.5*((image->columns-1.0)+distance*cosine); + gradient->gradient_vector.y2=0.5*((image->rows-1.0)+distance*sine); } - gradient->radii.x=(double) MagickMax(image->columns,image->rows)/2.0; + gradient->radii.x=(double) MagickMax((image->columns-1.0),(image->rows-1.0))/ + 2.0; gradient->radii.y=gradient->radii.x; artifact=GetImageArtifact(image,"gradient:extent"); if (artifact != (const char *) NULL) { if (LocaleCompare(artifact,"Circle") == 0) { - gradient->radii.x=(double) MagickMax(image->columns,image->rows)/2.0; + gradient->radii.x=(double) MagickMax((image->columns-1.0), + (image->rows-1.0))/2.0; gradient->radii.y=gradient->radii.x; } if (LocaleCompare(artifact,"Diagonal") == 0) { - gradient->radii.x=(double) (sqrt(image->columns*image->columns+ - image->rows*image->rows))/2.0; + gradient->radii.x=(double) (sqrt((image->columns-1.0)* + (image->columns-1.0)+(image->rows-1.0)*(image->rows-1.0)))/2.0; gradient->radii.y=gradient->radii.x; } if (LocaleCompare(artifact,"Ellipse") == 0) { - gradient->radii.x=(double) image->columns/2.0; - gradient->radii.y=(double) image->rows/2.0; + gradient->radii.x=(double) (image->columns-1.0)/2.0; + gradient->radii.y=(double) (image->rows-1.0)/2.0; } if (LocaleCompare(artifact,"Maximum") == 0) { - gradient->radii.x=(double) MagickMax(image->columns,image->rows)/2.0; + gradient->radii.x=(double) MagickMax((image->columns-1.0), + (image->rows-1.0))/2.0; gradient->radii.y=gradient->radii.x; } if (LocaleCompare(artifact,"Minimum") == 0) { - gradient->radii.x=(double) (MagickMin(image->columns,image->rows))/ - 2.0; + gradient->radii.x=(double) (MagickMin((image->columns-1.0), + (image->rows-1.0)))/2.0; gradient->radii.y=gradient->radii.x; } }