docs: protected void definePath(ZoomableGraphicsContext gc, T element) {
  		gc.beginPath();
  		final PathIterator2afp<PathElement2d> pathIterator = element.toPath2D().getPathIterator();
  		switch (pathIterator.getWindingRule()) {
  		case EVEN_ODD:
  			gc.setFillRule(FillRule.EVEN_ODD);
  			break;
  		case NON_ZERO:
  			gc.setFillRule(FillRule.NON_ZERO);
  			break;
  		default:
  			throw new IllegalStateException();
  		}
  		while (pathIterator.hasNext()) {
  			final PathElement2d pelement = pathIterator.next();
  			switch (pelement.getType()) {
  			case LINE_TO:
  				gc.lineTo(pelement.getToX(), pelement.getToY());
  				break;
  			case MOVE_TO:
  				gc.moveTo(pelement.getToX(), pelement.getToY());
  				break;
  			case CLOSE:
  				gc.closePath();
  				break;
  			case CURVE_TO:
  				gc.bezierCurveTo(
  						pelement.getCtrlX1(), pelement.getCtrlY1(),
  						pelement.getCtrlX2(), pelement.getCtrlY2(),
  						pelement.getToX(), pelement.getToY());
  				break;
  			case QUAD_TO:
  				gc.quadraticCurveTo(
  						pelement.getCtrlX1(), pelement.getCtrlY1(),
  						pelement.getToX(), pelement.getToY());
  				break;
  			case ARC_TO:
  				//TODO: implements arcTo
  				gc.lineTo(pelement.getToX(), pelement.getToY());
  				break;
  			default:
  				break;
  			}
  		}
  	}