Class Outline

java.lang.Object
com.jogamp.graph.geom.Outline
All Implemented Interfaces:
Comparable<Outline>

public class Outline extends Object implements Comparable<Outline>
Define a single continuous stroke by control vertices. The vertices define the shape of the region defined by this outline. The Outline can contain a list of off-curve and on-curve vertices which define curved regions. Note: An outline should be closed to be rendered as a region.
See Also:
  • Constructor Details

    • Outline

      public Outline()
      Create an outline defined by control vertices. An outline can contain off Curve vertices which define curved regions in the outline.
    • Outline

      public Outline(Outline src)
      Copy ctor
  • Method Details

    • getVertexCount

      public final int getVertexCount()
    • addVertex

      public final void addVertex(Vertex vertex) throws NullPointerException
      Appends a vertex to the outline loop/strip.
      Parameters:
      vertex - Vertex to be added
      Throws:
      NullPointerException - if the Vertex element is null
    • addVertex

      public final void addVertex(int position, Vertex vertex) throws NullPointerException, IndexOutOfBoundsException
      Insert the Vertex element at the given position to the outline loop/strip.
      Parameters:
      position - of the added Vertex
      vertex - Vertex object to be added
      Throws:
      NullPointerException - if the Vertex element is null
      IndexOutOfBoundsException - if position is out of range (position < 0 || position > getVertexNumber())
    • setVertex

      public final void setVertex(int position, Vertex vertex) throws NullPointerException, IndexOutOfBoundsException
      Replaces the Vertex element at the given position.

      Sets the bounding box dirty, hence a next call to getBounds() will validate it.

      Parameters:
      position - of the replaced Vertex
      vertex - replacement Vertex object
      Throws:
      NullPointerException - if the Outline element is null
      IndexOutOfBoundsException - if position is out of range (position < 0 || position >= getVertexNumber())
    • getVertex

      public final Vertex getVertex(int index)
    • getVertexIndex

      public int getVertexIndex(Vertex vertex)
    • removeVertex

      public final Vertex removeVertex(int position) throws IndexOutOfBoundsException
      Removes the Vertex element at the given position.

      Sets the bounding box dirty, hence a next call to getBounds() will validate it.

      Parameters:
      position - of the to be removed Vertex
      Throws:
      IndexOutOfBoundsException - if position is out of range (position < 0 || position >= getVertexNumber())
    • isEmpty

      public final boolean isEmpty()
    • getLastVertex

      public final Vertex getLastVertex()
    • getVertices

      public final ArrayList<Vertex> getVertices()
    • setVertices

      public final void setVertices(ArrayList<Vertex> vertices)
      Use the given outline loop/strip.

      Validates the bounding box.

      Parameters:
      vertices - the new outline loop/strip
    • isClosed

      public final boolean isClosed()
    • setClosed

      public final boolean setClosed(boolean closeTail)
      Ensure this outline is closed.

      Checks whether the last vertex equals to the first. If not equal, it either appends a clone of the first vertex or prepends a clone of the last vertex, depending on closeTail.

      Parameters:
      closeTail - if true, a clone of the first vertex will be appended, otherwise a clone of the last vertex will be prepended.
      Returns:
      true if closing performed, otherwise false for NOP
    • transform

      public final Outline transform(jogamp.graph.geom.plane.AffineTransform t, Vertex.Factory<? extends Vertex> vertexFactory)
      Return a transformed instance with all vertices are copied and transformed.
    • getBounds

      public final AABBox getBounds()
    • compareTo

      public final int compareTo(Outline other)
      Compare two outline's Bounding Box size.
      Specified by:
      compareTo in interface Comparable<Outline>
      See Also:
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
      Parameters:
      obj - the Object to compare this Outline with
      Returns:
      true if obj is an Outline, not null, equals bounds and equal vertices in the same order
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object