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 }