diff options
| author | Francis Kung <fkung@redhat.com> | 2006-07-27 20:59:41 +0000 |
|---|---|---|
| committer | Francis Kung <fkung@redhat.com> | 2006-07-27 20:59:41 +0000 |
| commit | c85d2bb435ae16ab1e6765b0f6e241aaeba9932b (patch) | |
| tree | 51ea4fd0829e7406e4b3dc338cbfc31d2bbb0e12 /gnu/java/awt/java2d/Segment.java | |
| parent | acd96c927546bf72dd29df5bb8a0cca8ede496c2 (diff) | |
| download | classpath-c85d2bb435ae16ab1e6765b0f6e241aaeba9932b.tar.gz | |
2006-07-27 Francis Kung <fkung@redhat.com>classpath-0_92-branch-point
* gnu/java/awt/java2d/CubicSegment.java: Added import.
(cp1): Renamed from first().
(c2): Renamed from last().
(first): Renamed to cp1().
(getDisplacedSegments): Implemented.
(last): Renamed to cp2().
* gnu/java/awt/java2d/LineSegment.java
(cp1): Renamed from first().
(c2): Renamed from last().
(first): Renamed to cp1().
(last): Renamed to cp2().
* gnu/java/awt/java2d/QuadSegment.java
(cp1): Renamed from first().
(c2): Renamed from last().
(first): Renamed to cp1().
(last): Renamed to cp2().
* gnu/java/awt/java2d/Segment.java: Added comments.
(first): New field.
(Segment): Keep track of first element in list.
(add): Update first & last element variables.
(cp1): Renamed from first().
(c2): Renamed from last().
(first()): Renamed to cp1() to reduce ambiguity.
(last()): Renamed to cp2() to reduce ambiguity.
(reverseAll): Update first element variable..
* gnu/java/awt/peer/gtk/CairoGraphics2D.java
(draw): Remove flattening path iterator.
* java/awt/BasicStroke.java: Clarified comments.
(addSegments): Refactored some code into joinSegments and
joinInnerSegments.
(capEnd): Rename of Segment.first() and Segment.end().
(joinInnerSegments): New method.
(joinOuterSegments): New method.
(joinSegments): Refactored some code into joinOuterSegments.
(solidStroke): Connect segments together properly.
Diffstat (limited to 'gnu/java/awt/java2d/Segment.java')
| -rw-r--r-- | gnu/java/awt/java2d/Segment.java | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/gnu/java/awt/java2d/Segment.java b/gnu/java/awt/java2d/Segment.java index 9a985f696..df1f67605 100644 --- a/gnu/java/awt/java2d/Segment.java +++ b/gnu/java/awt/java2d/Segment.java @@ -42,24 +42,38 @@ import java.awt.geom.Point2D; public abstract class Segment implements Cloneable { - // segment type, PathIterator segment types are used. + // Start and end points of THIS segment public Point2D P1; public Point2D P2; + + // Segments can be linked together internally as a linked list + public Segment first; public Segment next; public Segment last; + + // Half the stroke width protected double radius; + /** + * Create a new, empty segment + */ public Segment() { P1 = P2 = null; + first = this; next = null; last = this; } + /** + * Add a segment to the polygon + * @param newsegment segment to add + */ public void add(Segment newsegment) { + newsegment.first = first; last.next = newsegment; - last = last.next; + last = last.next.last; } /** @@ -68,6 +82,7 @@ public abstract class Segment implements Cloneable public void reverseAll() { reverse(); + first = last; Segment v = next; Segment former = this; next = null; @@ -91,7 +106,7 @@ public abstract class Segment implements Cloneable /** * Get the normal vector to the slope of the line. - * Returns: 0.5*width*(norm of derivative of the (x0,y0)-(x1,y1) vector) + * @return vector of length radius, normal to the (x0,y0)-(x1,y1) vector) */ protected double[] normal(double x0, double y0, double x1, double y1) { @@ -117,6 +132,9 @@ public abstract class Segment implements Cloneable return new double[]{ dx, dy }; } + /** + * Reverse the current segment + */ public abstract void reverse(); /** @@ -125,7 +143,16 @@ public abstract class Segment implements Cloneable */ public abstract Segment[] getDisplacedSegments(double radius); - public abstract double[] first(); - public abstract double[] last(); + /** + * Returns the coordinates of the first control point, or the start point + * for a line segment. + */ + public abstract double[] cp1(); + + /** + * Returns the coordinates of the second control point, or the end point + * for a line segment. + */ + public abstract double[] cp2(); } |
