diff --git a/MagickCore/colorspace.c b/MagickCore/colorspace.c
index 1748073..84e5cd6 100644
--- a/MagickCore/colorspace.c
+++ b/MagickCore/colorspace.c
@@ -619,20 +619,20 @@
gamma=DisplayGamma;
value=GetImageProperty(image,"gamma",exception);
if (value != (const char *) NULL)
- gamma=1.0/fabs(InterpretLocaleValue(value,(char **) NULL)) >=
- MagickEpsilon ? InterpretLocaleValue(value,(char **) NULL) : 1.0;
+ gamma=1.0/fabs(StringToDouble(value,(char **) NULL)) >=
+ MagickEpsilon ? StringToDouble(value,(char **) NULL) : 1.0;
film_gamma=FilmGamma;
value=GetImageProperty(image,"film-gamma",exception);
if (value != (const char *) NULL)
- film_gamma=InterpretLocaleValue(value,(char **) NULL);
+ film_gamma=StringToDouble(value,(char **) NULL);
reference_black=ReferenceBlack;
value=GetImageProperty(image,"reference-black",exception);
if (value != (const char *) NULL)
- reference_black=InterpretLocaleValue(value,(char **) NULL);
+ reference_black=StringToDouble(value,(char **) NULL);
reference_white=ReferenceWhite;
value=GetImageProperty(image,"reference-white",exception);
if (value != (const char *) NULL)
- reference_white=InterpretLocaleValue(value,(char **) NULL);
+ reference_white=StringToDouble(value,(char **) NULL);
logmap=(Quantum *) AcquireQuantumMemory((size_t) MaxMap+1UL,
sizeof(*logmap));
if (logmap == (Quantum *) NULL)
@@ -2067,20 +2067,20 @@
gamma=DisplayGamma;
value=GetImageProperty(image,"gamma",exception);
if (value != (const char *) NULL)
- gamma=1.0/fabs(InterpretLocaleValue(value,(char **) NULL)) >=
- MagickEpsilon ? InterpretLocaleValue(value,(char **) NULL) : 1.0;
+ gamma=1.0/fabs(StringToDouble(value,(char **) NULL)) >=
+ MagickEpsilon ? StringToDouble(value,(char **) NULL) : 1.0;
film_gamma=FilmGamma;
value=GetImageProperty(image,"film-gamma",exception);
if (value != (const char *) NULL)
- film_gamma=InterpretLocaleValue(value,(char **) NULL);
+ film_gamma=StringToDouble(value,(char **) NULL);
reference_black=ReferenceBlack;
value=GetImageProperty(image,"reference-black",exception);
if (value != (const char *) NULL)
- reference_black=InterpretLocaleValue(value,(char **) NULL);
+ reference_black=StringToDouble(value,(char **) NULL);
reference_white=ReferenceWhite;
value=GetImageProperty(image,"reference-white",exception);
if (value != (const char *) NULL)
- reference_white=InterpretLocaleValue(value,(char **) NULL);
+ reference_white=StringToDouble(value,(char **) NULL);
logmap=(Quantum *) AcquireQuantumMemory((size_t) MaxMap+1UL,
sizeof(*logmap));
if (logmap == (Quantum *) NULL)
diff --git a/MagickCore/display.c b/MagickCore/display.c
index ecd5ee7..408251c 100644
--- a/MagickCore/display.c
+++ b/MagickCore/display.c
@@ -2127,14 +2127,14 @@
break;
if (entry != 8)
{
- degrees=InterpretLocaleValue(RotateMenu[entry],(char **) NULL);
+ degrees=StringToDouble(RotateMenu[entry],(char **) NULL);
break;
}
(void) XDialogWidget(display,windows,"OK","Enter rotation angle:",
angle);
if (*angle == '\0')
break;
- degrees=InterpretLocaleValue(angle,(char **) NULL);
+ degrees=StringToDouble(angle,(char **) NULL);
break;
}
case AnnotateHelpCommand:
@@ -3543,7 +3543,7 @@
break;
if (entry != 5)
{
- (*image)->fuzz=InterpretLocaleInterval(FuzzMenu[entry],(double)
+ (*image)->fuzz=StringToDoubleInterval(FuzzMenu[entry],(double)
QuantumRange+1.0);
break;
}
@@ -3553,7 +3553,7 @@
if (*fuzz == '\0')
break;
(void) ConcatenateMagickString(fuzz,"%",MaxTextExtent);
- (*image)->fuzz=InterpretLocaleInterval(fuzz,(double) QuantumRange+1.0);
+ (*image)->fuzz=StringToDoubleInterval(fuzz,(double) QuantumRange+1.0);
break;
}
case ColorEditUndoCommand:
@@ -4091,7 +4091,7 @@
GXinvert);
if (*factor == '\0')
break;
- blend=InterpretLocaleValue(factor,(char **) NULL);
+ blend=StringToDouble(factor,(char **) NULL);
compose=DissolveCompositeOp;
break;
}
@@ -7728,7 +7728,7 @@
(void) XDialogWidget(display,windows,"Trim","Enter fuzz factor:",fuzz);
if (*fuzz == '\0')
break;
- (*image)->fuzz=InterpretLocaleInterval(fuzz,(double) QuantumRange+1.0);
+ (*image)->fuzz=StringToDoubleInterval(fuzz,(double) QuantumRange+1.0);
/*
Trim image.
*/
@@ -8310,7 +8310,7 @@
*/
XSetCursorState(display,windows,MagickTrue);
XCheckRefreshWindows(display,windows);
- threshold=InterpretLocaleInterval(factor,QuantumRange);
+ threshold=StringToDoubleInterval(factor,QuantumRange);
(void) BilevelImage(*image,threshold,exception);
XSetCursorState(display,windows,MagickFalse);
if (windows->image.orphan != MagickFalse)
@@ -8512,7 +8512,7 @@
*/
XSetCursorState(display,windows,MagickTrue);
XCheckRefreshWindows(display,windows);
- threshold=InterpretLocaleInterval(factor,QuantumRange);
+ threshold=StringToDoubleInterval(factor,QuantumRange);
sepia_image=SepiaToneImage(*image,threshold,exception);
if (sepia_image != (Image *) NULL)
{
@@ -8547,7 +8547,7 @@
*/
XSetCursorState(display,windows,MagickTrue);
XCheckRefreshWindows(display,windows);
- threshold=InterpretLocaleInterval(factor,QuantumRange);
+ threshold=StringToDoubleInterval(factor,QuantumRange);
(void) SolarizeImage(*image,threshold,exception);
XSetCursorState(display,windows,MagickFalse);
if (windows->image.orphan != MagickFalse)
@@ -9864,7 +9864,7 @@
break;
if (entry != 5)
{
- (*image)->fuzz=InterpretLocaleInterval(FuzzMenu[entry],(double)
+ (*image)->fuzz=StringToDoubleInterval(FuzzMenu[entry],(double)
QuantumRange+1.0);
break;
}
@@ -9874,7 +9874,7 @@
if (*fuzz == '\0')
break;
(void) ConcatenateMagickString(fuzz,"%",MaxTextExtent);
- (*image)->fuzz=InterpretLocaleInterval(fuzz,(double) QuantumRange+1.0);
+ (*image)->fuzz=StringToDoubleInterval(fuzz,(double) QuantumRange+1.0);
break;
}
case MatteEditValueCommand:
@@ -10178,7 +10178,7 @@
}
draw_info=CloneDrawInfo(resource_info->image_info,
(DrawInfo *) NULL);
- draw_info->fill.alpha=ClampToQuantum(InterpretLocaleValue(matte,
+ draw_info->fill.alpha=ClampToQuantum(StringToDouble(matte,
(char **) NULL));
channel_mask=SetPixelChannelMask(*image,AlphaChannel);
(void) FloodfillPaintImage(*image,draw_info,&target,(ssize_t)
diff --git a/MagickCore/distort.c b/MagickCore/distort.c
index daade12..2c24a8b 100644
--- a/MagickCore/distort.c
+++ b/MagickCore/distort.c
@@ -2189,7 +2189,7 @@
artifact=GetImageArtifact(image,"distort:scale");
output_scaling = 1.0;
if (artifact != (const char *) NULL) {
- output_scaling = fabs(InterpretLocaleValue(artifact,(char **) NULL));
+ output_scaling = fabs(StringToDouble(artifact,(char **) NULL));
geometry.width *= (size_t) output_scaling;
geometry.height *= (size_t) output_scaling;
geometry.x *= (ssize_t) output_scaling;
diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index f3f141f..7ba5d51 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -1652,7 +1652,7 @@
double
value;
- value=InterpretLocaleValue(point,&p);
+ value=StringToDouble(point,&p);
return((value == 0.0) && (p == point) ? MagickFalse : MagickTrue);
}
@@ -1819,27 +1819,27 @@
if (LocaleCompare("affine",keyword) == 0)
{
GetMagickToken(q,&q,token);
- affine.sx=InterpretLocaleValue(token,(char **) NULL);
+ affine.sx=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- affine.rx=InterpretLocaleValue(token,(char **) NULL);
+ affine.rx=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- affine.ry=InterpretLocaleValue(token,(char **) NULL);
+ affine.ry=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- affine.sy=InterpretLocaleValue(token,(char **) NULL);
+ affine.sy=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- affine.tx=InterpretLocaleValue(token,(char **) NULL);
+ affine.tx=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- affine.ty=InterpretLocaleValue(token,(char **) NULL);
+ affine.ty=StringToDouble(token,(char **) NULL);
break;
}
if (LocaleCompare("arc",keyword) == 0)
@@ -2006,7 +2006,7 @@
GetMagickToken(q,&q,token);
factor=strchr(token,'%') != (char *) NULL ? 0.01 : 1.0;
graphic_context[n]->fill.alpha=(MagickRealType) QuantumRange*
- factor*InterpretLocaleValue(token,(char **) NULL);
+ factor*StringToDouble(token,(char **) NULL);
break;
}
if (LocaleCompare("fill-rule",keyword) == 0)
@@ -2041,7 +2041,7 @@
if (LocaleCompare("font-size",keyword) == 0)
{
GetMagickToken(q,&q,token);
- graphic_context[n]->pointsize=InterpretLocaleValue(token,
+ graphic_context[n]->pointsize=StringToDouble(token,
(char **) NULL);
break;
}
@@ -2136,14 +2136,14 @@
if (LocaleCompare("interline-spacing",keyword) == 0)
{
GetMagickToken(q,&q,token);
- graphic_context[n]->interline_spacing=InterpretLocaleValue(token,
+ graphic_context[n]->interline_spacing=StringToDouble(token,
(char **) NULL);
break;
}
if (LocaleCompare("interword-spacing",keyword) == 0)
{
GetMagickToken(q,&q,token);
- graphic_context[n]->interword_spacing=InterpretLocaleValue(token,
+ graphic_context[n]->interword_spacing=StringToDouble(token,
(char **) NULL);
break;
}
@@ -2156,7 +2156,7 @@
if (LocaleCompare("kerning",keyword) == 0)
{
GetMagickToken(q,&q,token);
- graphic_context[n]->kerning=InterpretLocaleValue(token,
+ graphic_context[n]->kerning=StringToDouble(token,
(char **) NULL);
break;
}
@@ -2195,7 +2195,7 @@
factor=strchr(token,'%') != (char *) NULL ? 0.01 : 1.0;
graphic_context[n]->alpha=ClampToQuantum((MagickRealType)
QuantumRange*(1.0-((1.0-QuantumScale*graphic_context[n]->alpha)*
- factor*InterpretLocaleValue(token,(char **) NULL))));
+ factor*StringToDouble(token,(char **) NULL))));
graphic_context[n]->fill.alpha=(double) graphic_context[n]->alpha;
graphic_context[n]->stroke.alpha=(double) graphic_context[n]->alpha;
break;
@@ -2297,19 +2297,19 @@
GetMagickToken(q,&q,token);
(void) CopyMagickString(type,token,MaxTextExtent);
GetMagickToken(q,&q,token);
- segment.x1=InterpretLocaleValue(token,(char **) NULL);
+ segment.x1=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- segment.y1=InterpretLocaleValue(token,(char **) NULL);
+ segment.y1=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- segment.x2=InterpretLocaleValue(token,(char **) NULL);
+ segment.x2=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- segment.y2=InterpretLocaleValue(token,(char **) NULL);
+ segment.y2=StringToDouble(token,(char **) NULL);
if (LocaleCompare(type,"radial") == 0)
{
GetMagickToken(q,&q,token);
@@ -2359,22 +2359,22 @@
GetMagickToken(q,&q,token);
(void) CopyMagickString(name,token,MaxTextExtent);
GetMagickToken(q,&q,token);
- bounds.x=(ssize_t) ceil(InterpretLocaleValue(token,
+ bounds.x=(ssize_t) ceil(StringToDouble(token,
(char **) NULL)-0.5);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- bounds.y=(ssize_t) ceil(InterpretLocaleValue(token,
+ bounds.y=(ssize_t) ceil(StringToDouble(token,
(char **) NULL)-0.5);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- bounds.width=(size_t) floor(InterpretLocaleValue(token,
+ bounds.width=(size_t) floor(StringToDouble(token,
(char **) NULL)+0.5);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- bounds.height=(size_t) floor(InterpretLocaleValue(token,
+ bounds.height=(size_t) floor(StringToDouble(token,
(char **) NULL)+0.5);
for (p=q; *q != '\0'; )
{
@@ -2432,7 +2432,7 @@
if (LocaleCompare("rotate",keyword) == 0)
{
GetMagickToken(q,&q,token);
- angle=InterpretLocaleValue(token,(char **) NULL);
+ angle=StringToDouble(token,(char **) NULL);
affine.sx=cos(DegreesToRadians(fmod((double) angle,360.0)));
affine.rx=sin(DegreesToRadians(fmod((double) angle,360.0)));
affine.ry=(-sin(DegreesToRadians(fmod((double) angle,360.0))));
@@ -2453,24 +2453,24 @@
if (LocaleCompare("scale",keyword) == 0)
{
GetMagickToken(q,&q,token);
- affine.sx=InterpretLocaleValue(token,(char **) NULL);
+ affine.sx=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- affine.sy=InterpretLocaleValue(token,(char **) NULL);
+ affine.sy=StringToDouble(token,(char **) NULL);
break;
}
if (LocaleCompare("skewX",keyword) == 0)
{
GetMagickToken(q,&q,token);
- angle=InterpretLocaleValue(token,(char **) NULL);
+ angle=StringToDouble(token,(char **) NULL);
affine.ry=sin(DegreesToRadians(angle));
break;
}
if (LocaleCompare("skewY",keyword) == 0)
{
GetMagickToken(q,&q,token);
- angle=InterpretLocaleValue(token,(char **) NULL);
+ angle=StringToDouble(token,(char **) NULL);
affine.rx=(-tan(DegreesToRadians(angle)/2.0));
break;
}
@@ -2557,7 +2557,7 @@
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- graphic_context[n]->dash_pattern[j]=InterpretLocaleValue(
+ graphic_context[n]->dash_pattern[j]=StringToDouble(
token,(char **) NULL);
}
if ((x & 0x01) != 0)
@@ -2573,7 +2573,7 @@
if (LocaleCompare("stroke-dashoffset",keyword) == 0)
{
GetMagickToken(q,&q,token);
- graphic_context[n]->dash_offset=InterpretLocaleValue(token,
+ graphic_context[n]->dash_offset=StringToDouble(token,
(char **) NULL);
break;
}
@@ -2615,13 +2615,13 @@
GetMagickToken(q,&q,token);
factor=strchr(token,'%') != (char *) NULL ? 0.01 : 1.0;
graphic_context[n]->stroke.alpha=(MagickRealType) QuantumRange*
- factor*InterpretLocaleValue(token,(char **) NULL);
+ factor*StringToDouble(token,(char **) NULL);
break;
}
if (LocaleCompare("stroke-width",keyword) == 0)
{
GetMagickToken(q,&q,token);
- graphic_context[n]->stroke_width=InterpretLocaleValue(token,
+ graphic_context[n]->stroke_width=StringToDouble(token,
(char **) NULL);
break;
}
@@ -2679,11 +2679,11 @@
if (LocaleCompare("translate",keyword) == 0)
{
GetMagickToken(q,&q,token);
- affine.tx=InterpretLocaleValue(token,(char **) NULL);
+ affine.tx=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- affine.ty=InterpretLocaleValue(token,(char **) NULL);
+ affine.ty=StringToDouble(token,(char **) NULL);
break;
}
status=MagickFalse;
@@ -2695,23 +2695,23 @@
if (LocaleCompare("viewbox",keyword) == 0)
{
GetMagickToken(q,&q,token);
- graphic_context[n]->viewbox.x=(ssize_t) ceil(InterpretLocaleValue(
+ graphic_context[n]->viewbox.x=(ssize_t) ceil(StringToDouble(
token,(char **) NULL)-0.5);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- graphic_context[n]->viewbox.y=(ssize_t) ceil(InterpretLocaleValue(
+ graphic_context[n]->viewbox.y=(ssize_t) ceil(StringToDouble(
token,(char **) NULL)-0.5);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
graphic_context[n]->viewbox.width=(size_t) floor(
- InterpretLocaleValue(token,(char **) NULL)+0.5);
+ StringToDouble(token,(char **) NULL)+0.5);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
graphic_context[n]->viewbox.height=(size_t) floor(
- InterpretLocaleValue(token,(char **) NULL)+0.5);
+ StringToDouble(token,(char **) NULL)+0.5);
break;
}
status=MagickFalse;
@@ -2759,11 +2759,11 @@
if (IsPoint(q) == MagickFalse)
break;
GetMagickToken(q,&q,token);
- point.x=InterpretLocaleValue(token,(char **) NULL);
+ point.x=StringToDouble(token,(char **) NULL);
GetMagickToken(q,&q,token);
if (*token == ',')
GetMagickToken(q,&q,token);
- point.y=InterpretLocaleValue(token,(char **) NULL);
+ point.y=StringToDouble(token,(char **) NULL);
GetMagickToken(q,(const char **) NULL,token);
if (*token == ',')
GetMagickToken(q,&q,token);
@@ -2845,7 +2845,7 @@
double
value;
- value=InterpretLocaleValue(s,&t);
+ value=StringToDouble(s,&t);
(void) value;
if (s == t)
{
@@ -4783,14 +4783,14 @@
(void) CloneString(&draw_info->encoding,option);
option=GetImageOption(image_info,"kerning");
if (option != (const char *) NULL)
- draw_info->kerning=InterpretLocaleValue(option,(char **) NULL);
+ draw_info->kerning=StringToDouble(option,(char **) NULL);
option=GetImageOption(image_info,"interline-spacing");
if (option != (const char *) NULL)
- draw_info->interline_spacing=InterpretLocaleValue(option,
+ draw_info->interline_spacing=StringToDouble(option,
(char **) NULL);
option=GetImageOption(image_info,"interword-spacing");
if (option != (const char *) NULL)
- draw_info->interword_spacing=InterpretLocaleValue(option,
+ draw_info->interword_spacing=StringToDouble(option,
(char **) NULL);
option=GetImageOption(image_info,"direction");
if (option != (const char *) NULL)
@@ -4808,7 +4808,7 @@
exception);
option=GetImageOption(image_info,"strokewidth");
if (option != (const char *) NULL)
- draw_info->stroke_width=InterpretLocaleValue(option,(char **) NULL);
+ draw_info->stroke_width=StringToDouble(option,(char **) NULL);
option=GetImageOption(image_info,"undercolor");
if (option != (const char *) NULL)
(void) QueryColorCompliance(option,AllCompliance,&draw_info->undercolor,
@@ -5286,15 +5286,15 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- arc.x=InterpretLocaleValue(token,(char **) NULL);
+ arc.x=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- arc.y=InterpretLocaleValue(token,(char **) NULL);
+ arc.y=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- angle=InterpretLocaleValue(token,(char **) NULL);
+ angle=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
@@ -5306,11 +5306,11 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- x=InterpretLocaleValue(token,(char **) NULL);
+ x=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- y=InterpretLocaleValue(token,(char **) NULL);
+ y=StringToDouble(token,(char **) NULL);
end.x=(double) (attribute == (int) 'A' ? x : point.x+x);
end.y=(double) (attribute == (int) 'A' ? y : point.y+y);
TraceArcPath(q,point,end,arc,angle,large_arc,sweep);
@@ -5333,11 +5333,11 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- x=InterpretLocaleValue(token,(char **) NULL);
+ x=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- y=InterpretLocaleValue(token,(char **) NULL);
+ y=StringToDouble(token,(char **) NULL);
end.x=(double) (attribute == (int) 'C' ? x : point.x+x);
end.y=(double) (attribute == (int) 'C' ? y : point.y+y);
points[i]=end;
@@ -5358,7 +5358,7 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- x=InterpretLocaleValue(token,(char **) NULL);
+ x=StringToDouble(token,(char **) NULL);
point.x=(double) (attribute == (int) 'H' ? x: point.x+x);
TracePoint(q,point);
q+=q->coordinates;
@@ -5373,11 +5373,11 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- x=InterpretLocaleValue(token,(char **) NULL);
+ x=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- y=InterpretLocaleValue(token,(char **) NULL);
+ y=StringToDouble(token,(char **) NULL);
point.x=(double) (attribute == (int) 'L' ? x : point.x+x);
point.y=(double) (attribute == (int) 'L' ? y : point.y+y);
TracePoint(q,point);
@@ -5400,11 +5400,11 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- x=InterpretLocaleValue(token,(char **) NULL);
+ x=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- y=InterpretLocaleValue(token,(char **) NULL);
+ y=StringToDouble(token,(char **) NULL);
point.x=(double) (attribute == (int) 'M' ? x : point.x+x);
point.y=(double) (attribute == (int) 'M' ? y : point.y+y);
if (i == 0)
@@ -5434,11 +5434,11 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- x=InterpretLocaleValue(token,(char **) NULL);
+ x=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- y=InterpretLocaleValue(token,(char **) NULL);
+ y=StringToDouble(token,(char **) NULL);
if (*p == ',')
p++;
end.x=(double) (attribute == (int) 'Q' ? x : point.x+x);
@@ -5469,11 +5469,11 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- x=InterpretLocaleValue(token,(char **) NULL);
+ x=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- y=InterpretLocaleValue(token,(char **) NULL);
+ y=StringToDouble(token,(char **) NULL);
if (*p == ',')
p++;
end.x=(double) (attribute == (int) 'S' ? x : point.x+x);
@@ -5509,11 +5509,11 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- x=InterpretLocaleValue(token,(char **) NULL);
+ x=StringToDouble(token,(char **) NULL);
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- y=InterpretLocaleValue(token,(char **) NULL);
+ y=StringToDouble(token,(char **) NULL);
end.x=(double) (attribute == (int) 'T' ? x : point.x+x);
end.y=(double) (attribute == (int) 'T' ? y : point.y+y);
points[i]=end;
@@ -5539,7 +5539,7 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- y=InterpretLocaleValue(token,(char **) NULL);
+ y=StringToDouble(token,(char **) NULL);
point.y=(double) (attribute == (int) 'V' ? y : point.y+y);
TracePoint(q,point);
q+=q->coordinates;
diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c
index 1877b24..5514776 100644
--- a/MagickCore/enhance.c
+++ b/MagickCore/enhance.c
@@ -573,19 +573,19 @@
{
case 0:
{
- color_correction.red.slope=InterpretLocaleValue(token,
+ color_correction.red.slope=StringToDouble(token,
(char **) NULL);
break;
}
case 1:
{
- color_correction.green.slope=InterpretLocaleValue(token,
+ color_correction.green.slope=StringToDouble(token,
(char **) NULL);
break;
}
case 2:
{
- color_correction.blue.slope=InterpretLocaleValue(token,
+ color_correction.blue.slope=StringToDouble(token,
(char **) NULL);
break;
}
@@ -606,19 +606,19 @@
{
case 0:
{
- color_correction.red.offset=InterpretLocaleValue(token,
+ color_correction.red.offset=StringToDouble(token,
(char **) NULL);
break;
}
case 1:
{
- color_correction.green.offset=InterpretLocaleValue(token,
+ color_correction.green.offset=StringToDouble(token,
(char **) NULL);
break;
}
case 2:
{
- color_correction.blue.offset=InterpretLocaleValue(token,
+ color_correction.blue.offset=StringToDouble(token,
(char **) NULL);
break;
}
@@ -639,19 +639,19 @@
{
case 0:
{
- color_correction.red.power=InterpretLocaleValue(token,
+ color_correction.red.power=StringToDouble(token,
(char **) NULL);
break;
}
case 1:
{
- color_correction.green.power=InterpretLocaleValue(token,
+ color_correction.green.power=StringToDouble(token,
(char **) NULL);
break;
}
case 2:
{
- color_correction.blue.power=InterpretLocaleValue(token,
+ color_correction.blue.power=StringToDouble(token,
(char **) NULL);
break;
}
@@ -671,7 +671,7 @@
content=GetXMLTreeContent(saturation);
p=(const char *) content;
GetMagickToken(p,&p,token);
- color_correction.saturation=InterpretLocaleValue(token,
+ color_correction.saturation=StringToDouble(token,
(char **) NULL);
}
}
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index 981373f..afd3738 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -1175,7 +1175,7 @@
(double) channel,symbol);
value=(const char *) GetValueFromSplayTree(fx_info->symbols,key);
if (value != (const char *) NULL)
- return(QuantumScale*InterpretLocaleValue(value,(char **) NULL));
+ return(QuantumScale*StringToDouble(value,(char **) NULL));
(void) DeleteNodeFromSplayTree(fx_info->symbols,key);
if (LocaleNCompare(symbol,"depth",5) == 0)
{
@@ -1242,7 +1242,7 @@
}
(void) AddValueToSplayTree(fx_info->symbols,ConstantString(key),
ConstantString(statistic));
- return(QuantumScale*InterpretLocaleValue(statistic,(char **) NULL));
+ return(QuantumScale*StringToDouble(statistic,(char **) NULL));
}
static MagickRealType
@@ -1835,7 +1835,7 @@
}
value=(const char *) GetValueFromSplayTree(fx_info->symbols,symbol);
if (value != (const char *) NULL)
- return((MagickRealType) InterpretLocaleValue(value,(char **) NULL));
+ return((MagickRealType) StringToDouble(value,(char **) NULL));
(void) ThrowMagickException(exception,GetMagickModule(),OptionError,
"UnableToParseExpression","`%s'",symbol);
return(0.0);
@@ -2876,7 +2876,7 @@
break;
}
q=(char *) expression;
- alpha=InterpretLocaleValue(expression,&q);
+ alpha=InterpretSiPrefixValue(expression,&q);
if (q == expression)
return(FxGetSymbol(fx_info,channel,x,y,expression,exception));
return(alpha);
diff --git a/MagickCore/geometry.c b/MagickCore/geometry.c
index d5ab414..fea3a26 100644
--- a/MagickCore/geometry.c
+++ b/MagickCore/geometry.c
@@ -192,7 +192,7 @@
if (*p == '\0')
return(flags);
q=p;
- value=InterpretLocaleValue(p,&q);
+ value=StringToDouble(p,&q);
(void) value;
if (LocaleNCompare(p,"0x",2) == 0)
value=(double) strtol(p,&q,10);
@@ -206,7 +206,7 @@
if (LocaleNCompare(p,"0x",2) == 0)
*width=(size_t) strtol(p,&p,10);
else
- *width=(size_t) floor(InterpretLocaleValue(p,&p)+0.5);
+ *width=(size_t) floor(StringToDouble(p,&p)+0.5);
if (p != q)
flags|=WidthValue;
}
@@ -221,7 +221,7 @@
Parse height.
*/
q=p;
- *height=(size_t) floor(InterpretLocaleValue(p,&p)+0.5);
+ *height=(size_t) floor(StringToDouble(p,&p)+0.5);
if (p != q)
flags|=HeightValue;
}
@@ -234,7 +234,7 @@
if (*p == '-')
flags|=XNegative;
q=p;
- *x=(ssize_t) ceil(InterpretLocaleValue(p,&p)-0.5);
+ *x=(ssize_t) ceil(StringToDouble(p,&p)-0.5);
if (p != q)
flags|=XValue;
if ((*p == '+') || (*p == '-'))
@@ -245,7 +245,7 @@
if (*p == '-')
flags|=YNegative;
q=p;
- *y=(ssize_t) ceil(InterpretLocaleValue(p,&p)-0.5);
+ *y=(ssize_t) ceil(StringToDouble(p,&p)-0.5);
if (p != q)
flags|=YValue;
}
@@ -560,7 +560,7 @@
if (geometry == (const char *) NULL)
return(MagickFalse);
p=(char *) geometry;
- value=InterpretLocaleValue(geometry,&p);
+ value=StringToDouble(geometry,&p);
(void) value;
if (p == geometry)
return(MagickFalse);
@@ -671,33 +671,33 @@
{
case 0:
{
- affine_matrix->sx=InterpretLocaleValue(token,(char **) NULL);
+ affine_matrix->sx=StringToDouble(token,(char **) NULL);
break;
}
case 1:
{
- affine_matrix->rx=InterpretLocaleValue(token,(char **) NULL);
+ affine_matrix->rx=StringToDouble(token,(char **) NULL);
break;
}
case 2:
{
- affine_matrix->ry=InterpretLocaleValue(token,(char **) NULL);
+ affine_matrix->ry=StringToDouble(token,(char **) NULL);
break;
}
case 3:
{
- affine_matrix->sy=InterpretLocaleValue(token,(char **) NULL);
+ affine_matrix->sy=StringToDouble(token,(char **) NULL);
break;
}
case 4:
{
- affine_matrix->tx=InterpretLocaleValue(token,(char **) NULL);
+ affine_matrix->tx=StringToDouble(token,(char **) NULL);
flags|=XValue;
break;
}
case 5:
{
- affine_matrix->ty=InterpretLocaleValue(token,(char **) NULL);
+ affine_matrix->ty=StringToDouble(token,(char **) NULL);
flags|=YValue;
break;
}
@@ -861,7 +861,7 @@
if (*p == '\0')
return(flags);
q=p;
- value=InterpretLocaleValue(p,&q);
+ value=StringToDouble(p,&q);
if (LocaleNCompare(p,"0x",2) == 0)
value=(double) strtol(p,&q,10);
c=(int) ((unsigned char) *q);
@@ -875,7 +875,7 @@
if (LocaleNCompare(p,"0x",2) == 0)
value=(double) strtol(p,&p,10);
else
- value=InterpretLocaleValue(p,&p);
+ value=StringToDouble(p,&p);
if (p != q)
{
flags|=RhoValue;
@@ -898,7 +898,7 @@
(*p != '-')))
{
q=p;
- value=InterpretLocaleValue(p,&p);
+ value=StringToDouble(p,&p);
if (p != q)
{
flags|=SigmaValue;
@@ -916,7 +916,7 @@
if ((*p == ',') || (*p == '/') || (*p == ':'))
p++;
q=p;
- value=InterpretLocaleValue(p,&p);
+ value=StringToDouble(p,&p);
if (p != q)
{
flags|=XiValue;
@@ -935,7 +935,7 @@
if ((*p == ',') || (*p == '/') || (*p == ':'))
p++;
q=p;
- value=InterpretLocaleValue(p,&p);
+ value=StringToDouble(p,&p);
if (p != q)
{
flags|=PsiValue;
@@ -955,7 +955,7 @@
if ((*p == ',') || (*p == '/') || (*p == ':'))
p++;
q=p;
- value=InterpretLocaleValue(p,&p);
+ value=StringToDouble(p,&p);
if (p != q)
{
flags|=ChiValue;
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 2d54db2..e6c3055 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -4130,7 +4130,7 @@
exception);
option=GetImageOption(image_info,"bias");
if (option != (const char *) NULL)
- image->bias=InterpretLocaleInterval(option,QuantumRange);
+ image->bias=StringToDoubleInterval(option,QuantumRange);
option=GetImageOption(image_info,"black-point-compensation");
if (option != (const char *) NULL)
image->black_point_compensation=(MagickBooleanType) ParseCommandOption(
@@ -4185,7 +4185,7 @@
MagickFalse,option);
option=GetImageOption(image_info,"fuzz");
if (option != (const char *) NULL)
- image->fuzz=InterpretLocaleInterval(option,(double) QuantumRange+1.0);
+ image->fuzz=StringToDoubleInterval(option,(double) QuantumRange+1.0);
option=GetImageOption(image_info,"gravity");
if (option != (const char *) NULL)
image->gravity=(GravityType) ParseCommandOption(MagickGravityOptions,
diff --git a/MagickCore/locale.c b/MagickCore/locale.c
index 64a15d6..9668321 100644
--- a/MagickCore/locale.c
+++ b/MagickCore/locale.c
@@ -885,31 +885,6 @@
double
value;
- static const double
- SIPrefixes['z'-'E'+1] =
- {
- ['y'-'E'] = (-24.0),
- ['z'-'E'] = (-21.0),
- ['a'-'E'] = (-18.0),
- ['f'-'E'] = (-15.0),
- ['p'-'E'] = (-12.0),
- ['n'-'E'] = (-9.0),
- ['u'-'E'] = (-6.0),
- ['m'-'E'] = (-3.0),
- ['c'-'E'] = (-2.0),
- ['d'-'E'] = (-1.0),
- ['h'-'E'] = 2.0,
- ['k'-'E'] = 3.0,
- ['K'-'E'] = 3.0,
- ['M'-'E'] = 6.0,
- ['G'-'E'] = 9.0,
- ['T'-'E'] = 12.0,
- ['P'-'E'] = 15.0,
- ['E'-'E'] = 18.0,
- ['Z'-'E'] = 21.0,
- ['Y'-'E'] = 24.0
- };
-
if ((*string == '0') && ((string[1] | 0x20)=='x'))
value=(double) strtoul(string,&q,16);
else
@@ -927,34 +902,6 @@
value=strtod(string,&q);
#endif
}
- if (q != string)
- {
- if ((*q >= 'E') && (*q <= 'z'))
- {
- double
- e;
-
- e=SIPrefixes[*q-'E'];
- if (e >= MagickEpsilon)
- {
- if (q[1] == 'i')
- {
- value*=pow(2.0,e/0.3);
- q+=2;
- }
- else
- {
- value*=pow(10.0,e);
- q++;
- }
- }
- }
- if (*q == 'B')
- {
- value*=8.0;
- q++;
- }
- }
if (sentinal != (char **) NULL)
*sentinal=q;
return(value);
diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c
index 139e3bf..743ce70 100644
--- a/MagickCore/morphology.c
+++ b/MagickCore/morphology.c
@@ -331,7 +331,7 @@
kernel->values[i] = nan; /* do not include this value in kernel */
}
else {
- kernel->values[i] = InterpretLocaleValue(token,(char **) NULL);
+ kernel->values[i] = StringToDouble(token,(char **) NULL);
( kernel->values[i] < 0)
? ( kernel->negative_range += kernel->values[i] )
: ( kernel->positive_range += kernel->values[i] );
diff --git a/MagickCore/property.c b/MagickCore/property.c
index da7e19c..ce4a5f1 100644
--- a/MagickCore/property.c
+++ b/MagickCore/property.c
@@ -3200,7 +3200,7 @@
}
if (LocaleCompare(property,"bias") == 0)
{
- image->bias=InterpretLocaleInterval(value,QuantumRange);
+ image->bias=StringToDoubleInterval(value,QuantumRange);
break;
}
status=AddValueToSplayTree((SplayTreeInfo *) image->properties,
diff --git a/MagickCore/quantum.c b/MagickCore/quantum.c
index 28ca73c..2b117d8 100644
--- a/MagickCore/quantum.c
+++ b/MagickCore/quantum.c
@@ -373,10 +373,10 @@
MagickQuantumFormatOptions,MagickFalse,option);
option=GetImageOption(image_info,"quantum:minimum");
if (option != (char *) NULL)
- quantum_info->minimum=InterpretLocaleValue(option,(char **) NULL);
+ quantum_info->minimum=StringToDouble(option,(char **) NULL);
option=GetImageOption(image_info,"quantum:maximum");
if (option != (char *) NULL)
- quantum_info->maximum=InterpretLocaleValue(option,(char **) NULL);
+ quantum_info->maximum=StringToDouble(option,(char **) NULL);
if ((quantum_info->minimum == 0.0) && (quantum_info->maximum == 0.0))
quantum_info->scale=0.0;
else
@@ -390,7 +390,7 @@
quantum_info->minimum);
option=GetImageOption(image_info,"quantum:scale");
if (option != (char *) NULL)
- quantum_info->scale=InterpretLocaleValue(option,(char **) NULL);
+ quantum_info->scale=StringToDouble(option,(char **) NULL);
option=GetImageOption(image_info,"quantum:polarity");
if (option != (char *) NULL)
quantum_info->min_is_white=LocaleCompare(option,"min-is-white") == 0 ?
diff --git a/MagickCore/resize.c b/MagickCore/resize.c
index d243ed9..f9c59be 100644
--- a/MagickCore/resize.c
+++ b/MagickCore/resize.c
@@ -932,7 +932,7 @@
}
artifact=GetImageArtifact(image,"filter:sigma");
if (artifact != (const char *) NULL)
- sigma=InterpretLocaleValue(artifact,(char **) NULL); /* override sigma */
+ sigma=StringToDouble(artifact,(char **) NULL); /* override sigma */
if (GaussianFilter)
{
/*
@@ -944,17 +944,19 @@
}
artifact=GetImageArtifact(image,"filter:blur");
if (artifact != (const char *) NULL)
- resize_filter->blur*=InterpretLocaleValue(artifact,
- (char **) NULL); /* override blur */
+ resize_filter->blur*=StringToDouble(artifact,(char **) NULL); /* override blur */
if (resize_filter->blur < MagickEpsilon)
resize_filter->blur=(MagickRealType) MagickEpsilon;
artifact=GetImageArtifact(image,"filter:lobes");
if (artifact != (const char *) NULL)
{
+ ssize_t
+ lobes;
+
/*
Override lobes.
*/
- ssize_t lobes=(ssize_t) StringToLong(artifact);
+ lobes=(ssize_t) StringToLong(artifact);
if (lobes < 1)
lobes=1;
resize_filter->support=(MagickRealType) lobes;
@@ -971,7 +973,7 @@
}
artifact=GetImageArtifact(image,"filter:support");
if (artifact != (const char *) NULL)
- resize_filter->support=fabs(InterpretLocaleValue(artifact,
+ resize_filter->support=fabs(StringToDouble(artifact,
(char **) NULL)); /* override support */
/*
Scale windowing function separately to the support 'clipping' window that
@@ -980,7 +982,7 @@
resize_filter->window_support=resize_filter->support; /* default */
artifact=GetImageArtifact(image,"filter:win-support");
if (artifact != (const char *) NULL)
- resize_filter->window_support=fabs(InterpretLocaleValue(artifact,
+ resize_filter->window_support=fabs(StringToDouble(artifact,
(char **) NULL));
/*
Adjust window function scaling to match windowing support for weighting
@@ -1005,18 +1007,18 @@
artifact=GetImageArtifact(image,"filter:b");
if (artifact != (const char *) NULL)
{
- B=InterpretLocaleValue(artifact,(char **) NULL);
+ B=StringToDouble(artifact,(char **) NULL);
C=(1.0-B)/2.0; /* Calculate C to get a Keys cubic filter. */
artifact=GetImageArtifact(image,"filter:c"); /* user C override */
if (artifact != (const char *) NULL)
- C=InterpretLocaleValue(artifact,(char **) NULL);
+ C=StringToDouble(artifact,(char **) NULL);
}
else
{
artifact=GetImageArtifact(image,"filter:c");
if (artifact != (const char *) NULL)
{
- C=InterpretLocaleValue(artifact,(char **) NULL);
+ C=StringToDouble(artifact,(char **) NULL);
B=1.0-2.0*C; /* Calculate B to get a Keys cubic filter. */
}
}
diff --git a/MagickCore/resource.c b/MagickCore/resource.c
index 1c417d0..b92e205 100644
--- a/MagickCore/resource.c
+++ b/MagickCore/resource.c
@@ -899,7 +899,7 @@
double
value;
- value=InterpretLocaleInterval(string,interval);
+ value=StringToDoubleInterval(string,interval);
if (value >= (double) MagickULLConstant(~0))
return(MagickULLConstant(~0));
return((MagickSizeType) value);
diff --git a/MagickCore/string-private.h b/MagickCore/string-private.h
index 47d4317..8c99324 100644
--- a/MagickCore/string-private.h
+++ b/MagickCore/string-private.h
@@ -22,7 +22,15 @@
extern "C" {
#endif
-static inline double InterpretLocaleInterval(const char *string,
+#include <MagickCore/locale_.h>
+
+static inline double StringToDouble(const char *restrict string,
+ char **restrict sentinal)
+{
+ return(InterpretLocaleValue(string,sentinal));
+}
+
+static inline double StringToDoubleInterval(const char *string,
const double interval)
{
char
@@ -31,26 +39,23 @@
double
value;
- /*
- Interpret string with International System of Units (SI) unit prefix.
- */
- value=InterpretLocaleValue(string,&q);
+ value=InterpretSiPrefixValue(string,&q);
if (*q == '%')
value*=interval/100.0;
return(value);
}
-static inline int StringToInteger(const char *value)
+static inline int StringToInteger(const char *restrict value)
{
return((int) strtol(value,(char **) NULL,10));
}
-static inline long StringToLong(const char *value)
+static inline long StringToLong(const char *restrict value)
{
return(strtol(value,(char **) NULL,10));
}
-static inline unsigned long StringToUnsignedLong(const char *value)
+static inline unsigned long StringToUnsignedLong(const char *restrict value)
{
return(strtoul(value,(char **) NULL,10));
}
diff --git a/MagickCore/string.c b/MagickCore/string.c
index dd6ded7..7fe1fac 100644
--- a/MagickCore/string.c
+++ b/MagickCore/string.c
@@ -1311,6 +1311,101 @@
% %
% %
% %
++ I n t e r p r e t S i P r e f i x V a l u e %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% InterpretSiPrefixValue() converts the initial portion of the string to a
+% double representation. It also recognizes SI prefixes (e.g. B, KB, MiB,
+% etc.).
+%
+% The format of the InterpretSiPrefixValue method is:
+%
+% double InterpretSiPrefixValue(const char *value,char **sentinal)
+%
+% A description of each parameter follows:
+%
+% o value: the string value.
+%
+% o sentinal: if sentinal is not NULL, return a pointer to the character
+% after the last character used in the conversion.
+%
+*/
+MagickExport double InterpretSiPrefixValue(const char *restrict string,
+ char **restrict sentinal)
+{
+ char
+ *q;
+
+ double
+ value;
+
+ static const double
+ SIPrefixes['z'-'E'+1] =
+ {
+ ['y'-'E'] = (-24.0),
+ ['z'-'E'] = (-21.0),
+ ['a'-'E'] = (-18.0),
+ ['f'-'E'] = (-15.0),
+ ['p'-'E'] = (-12.0),
+ ['n'-'E'] = (-9.0),
+ ['u'-'E'] = (-6.0),
+ ['m'-'E'] = (-3.0),
+ ['c'-'E'] = (-2.0),
+ ['d'-'E'] = (-1.0),
+ ['h'-'E'] = 2.0,
+ ['k'-'E'] = 3.0,
+ ['K'-'E'] = 3.0,
+ ['M'-'E'] = 6.0,
+ ['G'-'E'] = 9.0,
+ ['T'-'E'] = 12.0,
+ ['P'-'E'] = 15.0,
+ ['E'-'E'] = 18.0,
+ ['Z'-'E'] = 21.0,
+ ['Y'-'E'] = 24.0
+ };
+
+ value=InterpretLocaleValue(string,&q);
+ if (q != string)
+ {
+ if ((*q >= 'E') && (*q <= 'z'))
+ {
+ double
+ e;
+
+ e=SIPrefixes[*q-'E'];
+ if (e >= MagickEpsilon)
+ {
+ if (q[1] == 'i')
+ {
+ value*=pow(2.0,e/0.3);
+ q+=2;
+ }
+ else
+ {
+ value*=pow(10.0,e);
+ q++;
+ }
+ }
+ }
+ if (*q == 'B')
+ {
+ value*=8.0;
+ q++;
+ }
+ }
+ if (sentinal != (char **) NULL)
+ *sentinal=q;
+ return(value);
+}
+
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% L o c a l e C o m p a r e %
% %
% %
diff --git a/MagickCore/string_.h b/MagickCore/string_.h
index fd91415..712e863 100644
--- a/MagickCore/string_.h
+++ b/MagickCore/string_.h
@@ -57,6 +57,9 @@
extern MagickExport const char
*GetStringInfoPath(const StringInfo *);
+extern MagickExport double
+ InterpretSiPrefixValue(const char *restrict,char **restrict);
+
extern MagickExport int
CompareStringInfo(const StringInfo *,const StringInfo *),
LocaleCompare(const char *,const char *),
diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c
index e42e3ab..cb200c6 100644
--- a/MagickCore/threshold.c
+++ b/MagickCore/threshold.c
@@ -1273,7 +1273,7 @@
GetMagickToken(p,&p,token);
if (*token == ',')
GetMagickToken(p,&p,token);
- levels[i]=InterpretLocaleValue(token,(char **) NULL);
+ levels[i]=StringToDouble(token,(char **) NULL);
}
for (i=0; i < MaxPixelChannels; i++)
if (fabs(levels[i]) >= 1)
diff --git a/MagickCore/token.c b/MagickCore/token.c
index fbc732d..73deea4 100644
--- a/MagickCore/token.c
+++ b/MagickCore/token.c
@@ -230,7 +230,7 @@
char
*q;
- value=InterpretLocaleValue(p,&q);
+ value=StringToDouble(p,&q);
(void) value;
if ((p != q) && (*p != ','))
{