...
diff --git a/coders/svg.c b/coders/svg.c
index c75e669..39270c7 100644
--- a/coders/svg.c
+++ b/coders/svg.c
@@ -288,6 +288,7 @@
const char *string)
{
char
+ *next_token,
token[MagickPathExtent];
const char
@@ -300,7 +301,7 @@
assert(string != (const char *) NULL);
p=(const char *) string;
GetNextToken(p,&p,MagickPathExtent,token);
- value=StringToDouble(token,(char **) NULL);
+ value=StringToDouble(token,&next_token);
if (strchr(token,'%') != (char *) NULL)
{
double
@@ -785,6 +786,7 @@
char
*color,
id[MagickPathExtent],
+ *next_token,
token[MagickPathExtent],
**tokens,
*units;
@@ -1274,7 +1276,23 @@
}
if (LocaleCompare(keyword,"font-size") == 0)
{
- svg_info->pointsize=GetUserSpaceCoordinateValue(svg_info,0,value);
+ if (LocaleCompare(value,"xx-small") == 0)
+ svg_info->pointsize=6.144;
+ else if (LocaleCompare(value,"x-small") == 0)
+ svg_info->pointsize=7.68;
+ else if (LocaleCompare(value,"small") == 0)
+ svg_info->pointsize=9.6;
+ else if (LocaleCompare(value,"medium") == 0)
+ svg_info->pointsize=12.0;
+ else if (LocaleCompare(value,"large") == 0)
+ svg_info->pointsize=14.4;
+ else if (LocaleCompare(value,"x-large") == 0)
+ svg_info->pointsize=17.28;
+ else if (LocaleCompare(value,"xx-large") == 0)
+ svg_info->pointsize=20.736;
+ else
+ svg_info->pointsize=GetUserSpaceCoordinateValue(svg_info,0,
+ value);
(void) FormatLocaleFile(svg_info->file,"font-size %g\n",
svg_info->pointsize);
break;
@@ -1325,23 +1343,23 @@
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.rx=StringToDouble(token,(char **) NULL);
+ affine.rx=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.ry=StringToDouble(token,(char **) NULL);
+ affine.ry=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.sy=StringToDouble(token,(char **) NULL);
+ affine.sy=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.tx=StringToDouble(token,(char **) NULL);
+ affine.tx=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.ty=StringToDouble(token,(char **) NULL);
+ affine.ty=StringToDouble(token,&next_token);
break;
}
break;
@@ -1944,23 +1962,23 @@
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.rx=StringToDouble(token,(char **) NULL);
+ affine.rx=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.ry=StringToDouble(token,(char **) NULL);
+ affine.ry=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.sy=StringToDouble(token,(char **) NULL);
+ affine.sy=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.tx=StringToDouble(token,(char **) NULL);
+ affine.tx=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- affine.ty=StringToDouble(token,(char **) NULL);
+ affine.ty=StringToDouble(token,&next_token);
break;
}
break;
@@ -1981,11 +1999,11 @@
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- x=StringToDouble(token,(char **) NULL);
+ x=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- y=StringToDouble(token,(char **) NULL);
+ y=StringToDouble(token,&next_token);
affine.sx=cos(DegreesToRadians(fmod(angle,360.0)));
affine.rx=sin(DegreesToRadians(fmod(angle,360.0)));
affine.ry=(-sin(DegreesToRadians(fmod(angle,360.0))));
@@ -2087,11 +2105,11 @@
{
p=(const char *) value;
GetNextToken(p,&p,MagickPathExtent,token);
- svg_info->view_box.x=StringToDouble(token,(char **) NULL);
+ svg_info->view_box.x=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
- svg_info->view_box.y=StringToDouble(token,(char **) NULL);
+ svg_info->view_box.y=StringToDouble(token,&next_token);
GetNextToken(p,&p,MagickPathExtent,token);
if (*token == ',')
GetNextToken(p,&p,MagickPathExtent,token);
@@ -3606,6 +3624,7 @@
keyword[MagickPathExtent],
message[MagickPathExtent],
name[MagickPathExtent],
+ *next_token,
*token,
type[MagickPathExtent];
@@ -3739,27 +3758,27 @@
if (LocaleCompare("affine",keyword) == 0)
{
GetNextToken(q,&q,extent,token);
- affine.sx=StringToDouble(token,(char **) NULL);
+ affine.sx=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- affine.rx=StringToDouble(token,(char **) NULL);
+ affine.rx=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- affine.ry=StringToDouble(token,(char **) NULL);
+ affine.ry=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- affine.sy=StringToDouble(token,(char **) NULL);
+ affine.sy=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- affine.tx=StringToDouble(token,(char **) NULL);
+ affine.tx=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- affine.ty=StringToDouble(token,(char **) NULL);
+ affine.ty=StringToDouble(token,&next_token);
break;
}
if (LocaleCompare("alpha",keyword) == 0)
@@ -3770,8 +3789,8 @@
if (LocaleCompare("angle",keyword) == 0)
{
GetNextToken(q,&q,extent,token);
- affine.rx=StringToDouble(token,(char **) NULL);
- affine.ry=StringToDouble(token,(char **) NULL);
+ affine.rx=StringToDouble(token,&next_token);
+ affine.ry=StringToDouble(token,&next_token);
break;
}
if (LocaleCompare("arc",keyword) == 0)
@@ -4075,23 +4094,23 @@
GetNextToken(q,&q,extent,token);
(void) CopyMagickString(type,token,MagickPathExtent);
GetNextToken(q,&q,extent,token);
- svg_info.segment.x1=StringToDouble(token,(char **) NULL);
- svg_info.element.cx=StringToDouble(token,(char **) NULL);
+ svg_info.segment.x1=StringToDouble(token,&next_token);
+ svg_info.element.cx=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- svg_info.segment.y1=StringToDouble(token,(char **) NULL);
- svg_info.element.cy=StringToDouble(token,(char **) NULL);
+ svg_info.segment.y1=StringToDouble(token,&next_token);
+ svg_info.element.cy=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- svg_info.segment.x2=StringToDouble(token,(char **) NULL);
+ svg_info.segment.x2=StringToDouble(token,&next_token);
svg_info.element.major=StringToDouble(token,
(char **) NULL);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- svg_info.segment.y2=StringToDouble(token,(char **) NULL);
+ svg_info.segment.y2=StringToDouble(token,&next_token);
svg_info.element.minor=StringToDouble(token,
(char **) NULL);
(void) FormatLocaleString(message,MagickPathExtent,
@@ -4131,11 +4150,11 @@
GetNextToken(q,&q,extent,token);
(void) CopyMagickString(name,token,MagickPathExtent);
GetNextToken(q,&q,extent,token);
- svg_info.bounds.x=StringToDouble(token,(char **) NULL);
+ svg_info.bounds.x=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- svg_info.bounds.y=StringToDouble(token,(char **) NULL);
+ svg_info.bounds.y=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
@@ -4189,11 +4208,11 @@
if (LocaleCompare("scale",keyword) == 0)
{
GetNextToken(q,&q,extent,token);
- affine.sx=StringToDouble(token,(char **) NULL);
+ affine.sx=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- affine.sy=StringToDouble(token,(char **) NULL);
+ affine.sy=StringToDouble(token,&next_token);
break;
}
if (LocaleCompare("skewX",keyword) == 0)
@@ -4344,11 +4363,11 @@
if (LocaleCompare("translate",keyword) == 0)
{
GetNextToken(q,&q,extent,token);
- affine.tx=StringToDouble(token,(char **) NULL);
+ affine.tx=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- affine.ty=StringToDouble(token,(char **) NULL);
+ affine.ty=StringToDouble(token,&next_token);
break;
}
status=MagickFalse;
@@ -4397,11 +4416,11 @@
if (IsPoint(q) == MagickFalse)
break;
GetNextToken(q,&q,extent,token);
- point.x=StringToDouble(token,(char **) NULL);
+ point.x=StringToDouble(token,&next_token);
GetNextToken(q,&q,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);
- point.y=StringToDouble(token,(char **) NULL);
+ point.y=StringToDouble(token,&next_token);
GetNextToken(q,(const char **) NULL,extent,token);
if (*token == ',')
GetNextToken(q,&q,extent,token);