int y = -1;
for (PathStep step : steps) {
if (step.getClass() == ClosePath.class) {
path.append(" x e");
} else if (step.getClass() == MoveTo.class) {
MoveTo moveTo = (MoveTo) step;
path.append(moveTo.isRelativeCoords() ? " t" : " m").append(
moveTo.getX()).append(" ").append(moveTo.getY());
} else if (step.getClass() == LineTo.class) {
LineTo lineTo = (LineTo) step;
path.append(lineTo.isRelativeCoords() ? " r" : " l").append(
lineTo.getX()).append(" ").append(lineTo.getY());
} else if (step.getClass() == CurveTo.class) {
CurveTo curve = (CurveTo) step;
path.append(curve.isRelativeCoords() ? " v" : " c");
path.append(curve.getX1()).append(" ").append(curve.getY1());
path.append(" ").append(curve.getX2()).append(" ").append(
curve.getY2());
path.append(" ").append(curve.getX()).append(" ").append(
curve.getY());
} else if (step.getClass() == Arc.class) {
// TODO
}
if (step instanceof MoveTo) {
MoveTo moveTo = (MoveTo) step;
x = moveTo.getX() + (moveTo.isRelativeCoords() ? x : 0);
y = moveTo.getY() + (moveTo.isRelativeCoords() ? y : 0);
} else {
// TODO close
}
}
element.setAttribute("path", path.toString());