switch(type) {
case PathIterator.SEG_MOVETO:
Point2D p = perspectiveTransform(new Point2D.Float(coords[0], coords[1]));
newPath.moveTo((float)p.getX(), (float)p.getY());
break;
p = perspectiveTransform(new Point2D.Float(coords[0], coords[1]));
newPath.lineTo((float)p.getX(), (float) p.getY());
break;
p = perspectiveTransform(new Point2D.Float(coords[0], coords[1]));
Point2D q = perspectiveTransform(new Point2D.Float(coords[2], coords[3]));
newPath.quadTo((float)p.getX(), (float)p.getY(), (float)q.getX(), (float)q.getY());
break;
p = perspectiveTransform(new Point2D.Float(coords[0], coords[1]));
q = perspectiveTransform(new Point2D.Float(coords[2], coords[3]));
Point2D r = perspectiveTransform(new Point2D.Float(coords[4], coords[5]));
newPath.curveTo((float)p.getX(), (float)p.getY(),
(float)q.getX(), (float)q.getY(),