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 ; } } }
Draw the polyline path .