arc;
/*
- Compute arc points.
+ Elliptical arc.
*/
do
{
case 'C':
{
/*
- Compute bezier points.
+ Cubic Bézier curve.
*/
do
{
TraceBezier(q,4);
q+=q->coordinates;
point=end;
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++;
+ if (*p == ',')
+ p++;
} while (IsPoint(p) != MagickFalse);
break;
}
point.x=(double) (attribute == (int) 'H' ? x: point.x+x);
TracePoint(q,point);
q+=q->coordinates;
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++;
+ if (*p == ',')
+ p++;
} while (IsPoint(p) != MagickFalse);
break;
}
case 'l':
case 'L':
{
+ /*
+ Line to.
+ */
do
{
GetNextToken(p,&p,MagickPathExtent,token);
point.y=(double) (attribute == (int) 'L' ? y : point.y+y);
TracePoint(q,point);
q+=q->coordinates;
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++;
+ if (*p == ',')
+ p++;
} while (IsPoint(p) != MagickFalse);
break;
}
case 'M':
case 'm':
{
+ /*
+ Move to;
+ */
if (q != primitive_info)
{
primitive_info->coordinates=(size_t) (q-primitive_info);
TracePoint(q,point);
q+=q->coordinates;
}
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++;
+ if (*p == ',')
+ p++;
} while (IsPoint(p) != MagickFalse);
break;
}
case 'Q':
{
/*
- Compute bezier points.
+ Quadratic Bézier curve.
*/
do
{
TraceBezier(q,3);
q+=q->coordinates;
point=end;
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++;
+ if (*p == ',')
+ p++;
} while (IsPoint(p) != MagickFalse);
break;
}
case 'S':
{
/*
- Compute bezier points.
+ Cubic Bézier curve.
*/
do
{
TraceBezier(q,4);
q+=q->coordinates;
point=end;
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++;
+ if (*p == ',')
+ p++;
} while (IsPoint(p) != MagickFalse);
break;
}
case 'T':
{
/*
- Compute bezier points.
+ Quadratic Bézier curve.
*/
do
{
TraceBezier(q,3);
q+=q->coordinates;
point=end;
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++;
+ if (*p == ',')
+ p++;
} while (IsPoint(p) != MagickFalse);
break;
}
case 'v':
case 'V':
{
+ /*
+ Line to.
+ */
do
{
GetNextToken(p,&p,MagickPathExtent,token);
point.y=(double) (attribute == (int) 'V' ? y : point.y+y);
TracePoint(q,point);
q+=q->coordinates;
+ while (isspace((int) ((unsigned char) *p)) != 0)
+ p++;
+ if (*p == ',')
+ p++;
} while (IsPoint(p) != MagickFalse);
break;
}
case 'z':
case 'Z':
{
+ /*
+ Close path.
+ */
point=start;
TracePoint(q,point);
q+=q->coordinates;