public void append(PathIterator pi, bool connect)
{
ClearCache ();
float [] coords = new float [6];
while (!pi.isDone ()) {
switch (pi.currentSegment (coords)) {
case SEG_MOVETO:
if (!connect || _typesCount < 1 || _coordsCount < 2) {
moveTo (coords [0], coords [1]);
break;
}
if (_types [_typesCount - 1] != SEG_CLOSE &&
_coords [_coordsCount - 2] == coords [0] &&
_coords [_coordsCount - 1] == coords [1])
break;
goto case SEG_LINETO;
case SEG_LINETO:
lineTo (coords [0], coords [1]);
break;
case SEG_QUADTO:
quadTo (coords [0], coords [1], coords [2], coords [3]);
break;
case SEG_CUBICTO:
curveTo (coords [0], coords [1], coords [2], coords [3], coords [4], coords [5]);
break;
case SEG_CLOSE:
closePath ();
break;
}
pi.next ();
connect = false;
}
}