From: cristy Date: Wed, 7 Dec 2011 13:04:03 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6576 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0762335477dce0f154671991a2c2c20cfe652cf1;p=imagemagick --- diff --git a/MagickCore/geometry.c b/MagickCore/geometry.c index fea3a2695..6c7b564cf 100644 --- a/MagickCore/geometry.c +++ b/MagickCore/geometry.c @@ -1197,10 +1197,17 @@ MagickExport MagickStatusType ParseMetaGeometry(const char *geometry,ssize_t *x, former_width=(*width); former_height=(*height); } - if (((flags & AspectValue) == 0) && ((*width != former_width) || - (*height != former_height))) + if (((flags & AspectValue) != 0) || ((*width == former_width) && + (*height == former_height))) { - MagickRealType + if ((flags & RhoValue) == 0) + *width=former_width; + if ((flags & SigmaValue) == 0) + *height=former_height; + } + else + { + double scale_factor; /* @@ -1211,40 +1218,30 @@ MagickExport MagickStatusType ParseMetaGeometry(const char *geometry,ssize_t *x, else if (((flags & RhoValue) != 0) && (flags & SigmaValue) != 0) { - scale_factor=(MagickRealType) *width/(MagickRealType) former_width; + scale_factor=(double) *width/(double) former_width; if ((flags & MinimumValue) == 0) { - if (scale_factor > ((MagickRealType) *height/(MagickRealType) - former_height)) - scale_factor=(MagickRealType) *height/(MagickRealType) - former_height; + if (scale_factor > ((double) *height/(double) former_height)) + scale_factor=(double) *height/(double) former_height; } else - if (scale_factor < ((MagickRealType) *height/(MagickRealType) - former_height)) - scale_factor=(MagickRealType) *height/(MagickRealType) - former_height; + if (scale_factor < ((double) *height/(double) former_height)) + scale_factor=(double) *height/(double) former_height; } else if ((flags & RhoValue) != 0) { - scale_factor=(MagickRealType) *width/(MagickRealType) - former_width; + scale_factor=(double) *width/(double) former_width; if (((flags & MinimumValue) != 0) && - (scale_factor < ((MagickRealType) *width/(MagickRealType) - former_height))) - scale_factor=(MagickRealType) *width/(MagickRealType) - former_height; + (scale_factor < ((double) *width/(double) former_height))) + scale_factor=(double) *width/(double) former_height; } else { - scale_factor=(MagickRealType) *height/(MagickRealType) - former_height; + scale_factor=(double) *height/(double) former_height; if (((flags & MinimumValue) != 0) && - (scale_factor < ((MagickRealType) *height/(MagickRealType) - former_width))) - scale_factor=(MagickRealType) *height/(MagickRealType) - former_width; + (scale_factor < ((double) *height/(double) former_width))) + scale_factor=(double) *height/(double) former_width; } *width=MagickMax((size_t) floor(scale_factor*former_width+0.5),1UL); *height=MagickMax((size_t) floor(scale_factor*former_height+0.5),1UL); @@ -1265,7 +1262,7 @@ MagickExport MagickStatusType ParseMetaGeometry(const char *geometry,ssize_t *x, } if ((flags & AreaValue) != 0) { - MagickRealType + double area, distance; @@ -1278,12 +1275,12 @@ MagickExport MagickStatusType ParseMetaGeometry(const char *geometry,ssize_t *x, (void) ParseGeometry(geometry,&geometry_info); area=geometry_info.rho; distance=sqrt((double) former_width*former_height); - scale.x=(double) former_width/(double) (distance/sqrt((double) area)); - scale.y=(double) former_height/(double) (distance/sqrt((double) area)); + scale.x=former_width/(distance/sqrt((double) area)); + scale.y=former_height/(distance/sqrt((double) area)); if ((scale.x < (double) *width) || (scale.y < (double) *height)) { - *width=(size_t) (former_width/(distance/sqrt((double) area))); - *height=(size_t) (former_height/(distance/sqrt((double) area))); + *width=(size_t) (former_width/(distance/sqrt(area))); + *height=(size_t) (former_height/(distance/sqrt(area))); } former_width=(*width); former_height=(*height);