View Javadoc
1   package edu.uci.ics.jung.visualization.util;
2   
3   import java.awt.geom.GeneralPath;
4   import java.awt.geom.PathIterator;
5   import java.awt.geom.Point2D;
6   
7   public class GeneralPathAsString {
8   
9       public static String toString(GeneralPath newPath) {
10      	StringBuilder sb = new StringBuilder();
11          float[] coords = new float[6];
12          for(PathIterator iterator=newPath.getPathIterator(null);
13              iterator.isDone() == false;
14              iterator.next()) {
15              int type = iterator.currentSegment(coords);
16              switch(type) {
17              case PathIterator.SEG_MOVETO:
18                  Point2D p = new Point2D.Float(coords[0], coords[1]);
19                  sb.append("moveTo "+p+"--");
20                  break;
21                  
22              case PathIterator.SEG_LINETO:
23                  p = new Point2D.Float(coords[0], coords[1]);
24                  sb.append("lineTo "+p+"--");
25                  break;
26                  
27              case PathIterator.SEG_QUADTO:
28                  p = new Point2D.Float(coords[0], coords[1]);
29                  Point2D q = new Point2D.Float(coords[2], coords[3]);
30                  sb.append("quadTo "+p+" controlled by "+q);
31                  break;
32                  
33              case PathIterator.SEG_CUBICTO:
34                  p = new Point2D.Float(coords[0], coords[1]);
35                  q = new Point2D.Float(coords[2], coords[3]);
36                  Point2D r = new Point2D.Float(coords[4], coords[5]);
37                  sb.append("cubeTo "+p+" controlled by "+q+","+r);
38  
39                  break;
40                  
41              case PathIterator.SEG_CLOSE:
42                  newPath.closePath();
43                  sb.append("close");
44                  break;
45                      
46              }
47          }
48          return sb.toString();
49      }
50  
51  }