Advertisement
Guest User

SubPath

a guest
Jun 21st, 2016
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.89 KB | None | 0 0
  1. import java.awt.geom.Point2D;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.List;
  5.  
  6. public class SubPath implements Iterable<Segment>
  7. {
  8.     SubPath(Point2D.Float start)
  9.     {
  10.         this.start = start;
  11.         currentPoint = start;
  12.     }
  13.  
  14.     public Point2D getStart()
  15.     {
  16.         return start;
  17.     }
  18.  
  19.     void lineTo(float x, float y)
  20.     {
  21.         Point2D.Float end = new Point2D.Float(x, y);
  22.         segments.add(new Line(currentPoint, end));
  23.         currentPoint = end;
  24.     }
  25.  
  26.     void curveTo(float x1, float y1, float x2, float y2, float x3, float y3)
  27.     {
  28.         Point2D.Float control1 = new Point2D.Float(x1, y1);
  29.         Point2D.Float control2 = new Point2D.Float(x2, y2);
  30.         Point2D.Float end = new Point2D.Float(x3, y3);
  31.         segments.add(new Curve(currentPoint, control1, control2, end));
  32.         currentPoint = end;
  33.     }
  34.  
  35.     void closePath()
  36.     {
  37.         closed = true;
  38.         segments.add(new Line(currentPoint,start));
  39.         currentPoint = start;
  40.     }
  41.  
  42.     //
  43.     // Iterable<Segment> implementation
  44.     //
  45.     public Iterator<Segment> iterator()
  46.     {
  47.         return segments.iterator();
  48.     }
  49.  
  50.     //
  51.     // Object override
  52.     //
  53.     @Override
  54.     public String toString()
  55.     {
  56.         StringBuilder builder = new StringBuilder();
  57.         builder.append("  {\n    Start at: ")
  58.                 .append(start.getX())
  59.                 .append(", ")
  60.                 .append(start.getY())
  61.                 .append('\n');
  62.         for (Segment segment : segments)
  63.             builder.append(segment);
  64.         if (closed)
  65.             builder.append("    Closed\n");
  66.         builder.append("  }\n");
  67.         return builder.toString();
  68.     }
  69.  
  70.     boolean closed = false;
  71.     final Point2D.Float start;
  72.     final List<Segment> segments = new ArrayList<Segment>();
  73.  
  74.     Point2D.Float currentPoint = null;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement