Class Path

All Implemented Interfaces:
Fillable, Strokable
Direct Known Subclasses:
Polygon

public class Path extends GraphicsObject implements Strokable, Fillable
An arbitrary path or polygon with straight sides, possibly self-intersecting.

The path is internally represented as a list of points, with an edge of the path connecting each adjacent pair of points in the list. The order of the list is thus important. Incorrectly ordering the list can lead to self-intersecting polygon, which are neat, but possibly not what you want.

An optional final edge connects the first and last point in the list. You can disable this by passing `false` to the second argument of setPoints().

A path’s position is the upper left corner of the bounding box of all its points, and its size is the size of that bounding box.

  • Constructor Details

    • Path

      public Path(List<Point> points)
      Create a closed polygon whose vertices comes from the given list of points. The list of points must not non-null.
    • Path

      public Path(Point... points)
      Creates a closed polygon from vertices passed as separate arguments.
    • Path

      public Path(List<Point> points, boolean closed)
      Create an optionally closed path whose vertices comes from the given list of points. The list of points must not non-null.
      Parameters:
      closed - If true, a final line connects the end of the path back to the start, forming a polygon.
  • Method Details

    • makeTriangle

      public static Path makeTriangle(double x0, double y0, double x1, double y1, double x2, double y2)
      Convenience method to create a triangle from three individual coordinates.
    • setVertices

      public void setVertices(List<Point> points)
      Replaces the path's coordinates, preserving its open/close status. The coordinates are relative to the path’s container; the method ignores the path’s current position.
    • setVertices

      public void setVertices(List<Point> points, boolean closed)
      Changes the verices of this path, replacing any existing ones. The coordinates are relative to the path’s container; the method ignores the path’s current position.
      Parameters:
      closed - If true, a final line connects the end of the path back to the start, forming a polygon.
    • drawInLocalCoordinates

      protected void drawInLocalCoordinates(Graphics2D gc)
      Description copied from class: GraphicsObject
      For internal use. Draws this graphics object on the screen in its local coordinates, without rotation or scaling.
      Specified by:
      drawInLocalCoordinates in class GraphicsObject
    • getFillColor

      public Paint getFillColor()
      Description copied from interface: Fillable
      Returns the color to fillColor that will be used to fill this shape if it is filled. Note that there will still be no fill if isFilled() is false.
      Specified by:
      getFillColor in interface Fillable
    • setFillColor

      public void setFillColor(Paint fillColor)
      Description copied from interface: Fillable
      Sets the fill color to the given color. Automatically calls setFilled(true).
      Specified by:
      setFillColor in interface Fillable
    • getStrokeColor

      public Paint getStrokeColor()
      Description copied from interface: Strokable
      Returns the color to strokeColor that will be used to stroke this shape if it is stroked. Note that there will still be no stroke if isStroked() is false or the stroke width is zero.
      Specified by:
      getStrokeColor in interface Strokable
    • setStrokeColor

      public void setStrokeColor(Paint strokeColor)
      Description copied from interface: Strokable
      Sets the stroke color to the given color. Automatically calls setStroked(true).
      Specified by:
      setStrokeColor in interface Strokable
    • isFilled

      public boolean isFilled()
      Description copied from interface: Fillable
      Returns true if the interior of this shape will be filled with the fill color.
      Specified by:
      isFilled in interface Fillable
    • setFilled

      public void setFilled(boolean filled)
      Description copied from interface: Fillable
      Causes the shape to be filled with the fill color when it is drawn.
      Specified by:
      setFilled in interface Fillable
    • isStroked

      public boolean isStroked()
      Description copied from interface: Strokable
      Returns true if the interior of this shape will be stroked with the stroke color.
      Specified by:
      isStroked in interface Strokable
    • setStroked

      public void setStroked(boolean stroked)
      Description copied from interface: Strokable
      Causes the shape to be stroked with the stroke color when it is drawn.
      Specified by:
      setStroked in interface Strokable
    • getStrokeWidth

      public double getStrokeWidth()
      Description copied from interface: Strokable
      Returns the thickness of the stroke in pixels.
      Specified by:
      getStrokeWidth in interface Strokable
    • setStrokeWidth

      public void setStrokeWidth(double width)
      Description copied from interface: Strokable
      Sets how thick the stroke is. Automatically calls setStroked(true).
      Specified by:
      setStrokeWidth in interface Strokable
    • isClosed

      public boolean isClosed()
      Returns true if this path loops back to its starting point.
    • testHitInLocalCoordinates

      public boolean testHitInLocalCoordinates(double x, double y)
      Tests whether the given point is on the interior of this path. Does not account for stroke width.
      Specified by:
      testHitInLocalCoordinates in class GraphicsObject
    • getBounds

      public Rectangle2D getBounds()
      Description copied from class: GraphicsObject
      Returns the bounding box of this graphics object in its local coordinates.
      Specified by:
      getBounds in class GraphicsObject
    • getEqualityAttributes

      protected Object getEqualityAttributes()
      Description copied from class: GraphicsObject
      For internal use only. Used to compute equals() and hashCode(). Returns an object whose equals() and hashCode() methods encompass the subclass-specific values that should be used to compute equality for the whole GraphicsObject.
      Specified by:
      getEqualityAttributes in class GraphicsObject
    • toString

      public String toString()
      Returns a string representation of the Polygon
      Overrides:
      toString in class Object