From: cristy Date: Thu, 2 Aug 2012 11:54:05 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~5203 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1ad6c873722662fe94f2a2311ebc298f69712801;p=imagemagick --- diff --git a/MagickCore/geometry.c b/MagickCore/geometry.c index 3f8a41dfc..2484311d2 100644 --- a/MagickCore/geometry.c +++ b/MagickCore/geometry.c @@ -170,6 +170,13 @@ MagickExport MagickStatusType GetGeometry(const char *geometry,ssize_t *x, (void) CopyMagickString(p,p+1,MaxTextExtent); break; } + case 'x': + case 'X': + { + flags|=SeparatorValue; + p++; + break; + } case '-': case '.': case ',': @@ -184,8 +191,6 @@ MagickExport MagickStatusType GetGeometry(const char *geometry,ssize_t *x, case '7': case '8': case '9': - case 'x': - case 'X': case 215: { p++; @@ -281,6 +286,19 @@ MagickExport MagickStatusType GetGeometry(const char *geometry,ssize_t *x, *y=(-*y); } } + if ((flags & SeparatorValue) == 0) + { + if (((flags & PercentValue) != 0) && ((flags & WidthValue) == 0)) + { + *width=(*height); + flags|=WidthValue; + } + if (((flags & PercentValue) != 0) && ((flags & HeightValue) == 0)) + { + *height=(*width); + flags|=HeightValue; + } + } #if 0 /* Debugging Geometry */ (void) fprintf(stderr,"GetGeometry...\n"); @@ -867,6 +885,13 @@ MagickExport MagickStatusType ParseGeometry(const char *geometry, (void) CopyMagickString(p,p+1,MaxTextExtent); break; } + case 'x': + case 'X': + { + flags|=SeparatorValue; + p++; + break; + } case '-': case '+': case ',': @@ -880,8 +905,6 @@ MagickExport MagickStatusType ParseGeometry(const char *geometry, case '7': case '8': case '9': - case 'x': - case 'X': case '/': case ':': case 215: @@ -1049,6 +1072,19 @@ MagickExport MagickStatusType ParseGeometry(const char *geometry, flags|=SigmaValue; flags&=(~XiValue); } + if ((flags & SeparatorValue) == 0) + { + if (((flags & PercentValue) != 0) && ((flags & RhoValue) == 0)) + { + geometry_info->rho=geometry_info->sigma; + flags|=RhoValue; + } + if (((flags & PercentValue) != 0) && ((flags & SigmaValue) == 0)) + { + geometry_info->sigma=geometry_info->rho; + flags|=SigmaValue; + } + } #if 0 /* Debugging Geometry */ (void) fprintf(stderr,"ParseGeometry...\n"); diff --git a/MagickCore/geometry.h b/MagickCore/geometry.h index 468932167..237560050 100644 --- a/MagickCore/geometry.h +++ b/MagickCore/geometry.h @@ -55,6 +55,7 @@ typedef enum CorrelateNormalizeValue = 0x10000, /* '^' see ScaleKernelValue() */ AreaValue = 0x20000, /* '@' resize to area - special use flag */ DecimalValue = 0x40000, /* '.' floating point numbers found */ + SeparatorValue = 0x80000, /* 'x' separator found */ #undef AllValues AllValues = 0x7fffffff } GeometryFlags;