Class Ring

java.lang.Object
org.eclipse.gef.geometry.planar.Ring
All Implemented Interfaces:
Serializable, Cloneable, IGeometry, IMultiShape, IRotatable<Ring>, IScalable<Ring>, ITranslatable<Ring>

public class Ring extends Object implements ITranslatable<Ring>, IScalable<Ring>, IRotatable<Ring>
A combination of Polygons....
See Also:
  • Constructor Details

    • Ring

      public Ring()
      Constructs a new empty Ring.
    • Ring

      public Ring(Polygon... polygons)
      Constructs a new Ring from the given Polygons.
      Parameters:
      polygons - The array of Polygons from which this Ring is constructed.
    • Ring

      public Ring(Ring other)
      Constructs a new Ring from the given other Ring. The internal IShapes of the other Ring are copied to prevent actions at a distance.
      Parameters:
      other - The Ring from which this Ring is constructed.
  • Method Details

    • add

      public Ring add(Polygon p)
      Adds the given Polygon to this Ring.
      Parameters:
      p - The Polygon which is added to this Ring.
      Returns:
      this for convenience
    • contains

      public boolean contains(IGeometry g)
      Description copied from interface: IMultiShape
      Checks if the given IGeometry is fully contained by this IMultiShape.
      Specified by:
      contains in interface IMultiShape
      Parameters:
      g - The IGeometry which is tested for containment.
      Returns:
      true if the IGeometry is contained by this IMultiShape, otherwise false
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • getAllEdges

      protected Line[] getAllEdges()
      Collects all edges of the internal IShapes. For a Region the internal IShapes are Rectangles. For a Ring the internal IShapes are Polygons (triangles). The internal edges are needed to determine inner and outer segments of the IMultiShape. Based on the outline of the IMultiShape, the outline intersections can be computed. These outline intersections are required to test if an ICurve is fully-contained by the IMultiShape.
      Returns:
      the edges of all internal IShapes
    • getBounds

      public Rectangle getBounds()
      Description copied from interface: IGeometry
      Returns the smallest Rectangle fully enclosing this IGeometry.
      Specified by:
      getBounds in interface IGeometry
      Returns:
      A new Rectangle object that fully encloses this IGeometry
    • getCopy

      public Ring getCopy()
      Description copied from interface: IGeometry
      Returns a new identical copy of this IGeometry.
      Specified by:
      getCopy in interface IGeometry
      Returns:
      a copy identical to this IGeometry
    • getRotatedCCW

      public Ring getRotatedCCW(Angle angle)
      Description copied from interface: IRotatable
      Rotates the calling object by specified Angle counter-clock-wise (CCW) around its center Point. Does not necessarily return an object of the same type.
      Specified by:
      getRotatedCCW in interface IRotatable<Ring>
      Parameters:
      angle - rotation Angle
      Returns:
      an IGeometry representing the result of the rotation
    • getRotatedCCW

      public Ring getRotatedCCW(Angle angle, double cx, double cy)
      Description copied from interface: IRotatable
      Rotates the calling object by the specified Angle counter-clock-wise (CCW) around the specified center Point (cx, cy). Does not necessarily return an object of the same type.
      Specified by:
      getRotatedCCW in interface IRotatable<Ring>
      Parameters:
      angle - rotation Angle
      cx - x-coordinate of the relative Point for the rotation
      cy - y-coordinate of the relative Point for the rotation
      Returns:
      an IGeometry representing the result of the rotation
    • getRotatedCCW

      public Ring getRotatedCCW(Angle angle, Point center)
      Description copied from interface: IRotatable
      Rotates the calling object by the specified Angle counter-clock-wise (CCW) around the specified center Point. Does not necessarily return an object of the same type.
      Specified by:
      getRotatedCCW in interface IRotatable<Ring>
      Parameters:
      angle - rotation Angle
      center - relative Point for the rotation
      Returns:
      an IGeometry representing the result of the rotation
    • getRotatedCW

      public Ring getRotatedCW(Angle angle)
      Description copied from interface: IRotatable
      Rotates the calling object by specified Angle clock-wise (CW) around its center Point. Does not necessarily return an object of the same type.
      Specified by:
      getRotatedCW in interface IRotatable<Ring>
      Parameters:
      angle - rotation Angle
      Returns:
      an IGeometry representing the result of the rotation
    • getRotatedCW

      public Ring getRotatedCW(Angle angle, double cx, double cy)
      Description copied from interface: IRotatable
      Rotates the calling object by the specified Angle clock-wise (CW) around the specified center Point (cx, cy). Does not necessarily return an object of the same type.
      Specified by:
      getRotatedCW in interface IRotatable<Ring>
      Parameters:
      angle - rotation Angle
      cx - x-coordinate of the relative Point for the rotation
      cy - y-coordinate of the relative Point for the rotation
      Returns:
      an IGeometry representing the result of the rotation
    • getRotatedCW

      public Ring getRotatedCW(Angle angle, Point center)
      Description copied from interface: IRotatable
      Rotates the calling object by the specified Angle clock-wise (CW) around the specified center Point. Does not necessarily return an object of the same type.
      Specified by:
      getRotatedCW in interface IRotatable<Ring>
      Parameters:
      angle - rotation Angle
      center - relative Point for the rotation
      Returns:
      an IGeometry representing the result of the rotation
    • getScaled

      public Ring getScaled(double factor)
      Description copied from interface: IScalable
      Scales a copy of the calling object by the given factor relative to its center Point.
      Specified by:
      getScaled in interface IScalable<Ring>
      Parameters:
      factor - scale-factor
      Returns:
      the new, scaled object
    • getScaled

      public Ring getScaled(double fx, double fy)
      Description copied from interface: IScalable
      Scales a copy of the calling object by the given factors relative to its center Point.
      Specified by:
      getScaled in interface IScalable<Ring>
      Parameters:
      fx - x-scale-factor
      fy - y-scale-factor
      Returns:
      the new, scaled object
    • getScaled

      public Ring getScaled(double factor, double cx, double cy)
      Description copied from interface: IScalable
      Scales a copy of the calling object by the given factor relative to the given center Point (cx, cy).
      Specified by:
      getScaled in interface IScalable<Ring>
      Parameters:
      factor - scale-factor
      cx - x-coordinate of the relative Point for the scaling
      cy - y-coordinate of the relative Point for the scaling
      Returns:
      the new, scaled object
    • getScaled

      public Ring getScaled(double fx, double fy, double cx, double cy)
      Description copied from interface: IScalable
      Scales a copy of the calling object by the given factors relative to the given center Point (cx, cy).
      Specified by:
      getScaled in interface IScalable<Ring>
      Parameters:
      fx - x-scale-factor
      fy - y-scale-factor
      cx - x-coordinate of the relative Point for the scaling
      cy - y-coordinate of the relative Point for the scaling
      Returns:
      the new, scaled object
    • getScaled

      public Ring getScaled(double fx, double fy, Point center)
      Description copied from interface: IScalable
      Scales a copy of the calling object by the given factors relative to the given center Point.
      Specified by:
      getScaled in interface IScalable<Ring>
      Parameters:
      fx - x-scale-factor
      fy - y-scale-factor
      center - relative Point for the scaling
      Returns:
      the new, scaled object
    • getScaled

      public Ring getScaled(double factor, Point center)
      Description copied from interface: IScalable
      Scales a copy of the calling object by the given factor relative to the given center Point.
      Specified by:
      getScaled in interface IScalable<Ring>
      Parameters:
      factor - scale-factor
      center - relative Point for the scaling
      Returns:
      the new, scaled object
    • getShapes

      public Polygon[] getShapes()
      Description copied from interface: IMultiShape
      Returns the IShapes that constitute this IMultiShape.
      Specified by:
      getShapes in interface IMultiShape
      Returns:
      an array of IShapes, representing the parts that make up this IMultiShape.
    • getTransformed

      public Ring getTransformed(AffineTransform t)
      Default implementation returning a transformed Path representation of this IGeometry. Subclasses may override this method to return a more specific representation.
      Specified by:
      getTransformed in interface IGeometry
      Parameters:
      t - The AffineTransform to be applied
      Returns:
      a transformed Path representation of this IGeometry
    • getTranslated

      public Ring getTranslated(double dx, double dy)
      Description copied from interface: ITranslatable
      Translates a copy of this object by the given values in x and y direction.
      Specified by:
      getTranslated in interface ITranslatable<Ring>
      Parameters:
      dx - x-translation
      dy - y-translation
      Returns:
      a new, translated object
    • getTranslated

      public Ring getTranslated(Point d)
      Description copied from interface: ITranslatable
      Translates a copy of this object by the given Point.
      Specified by:
      getTranslated in interface ITranslatable<Ring>
      Parameters:
      d - translation Point
      Returns:
      a new, translated object
    • rotateCCW

      public Ring rotateCCW(Angle angle)
      Directly rotates this Ring counter-clock-wise around its center Point by the given Angle. Direct adaptation means, that this PolyBezier is modified in-place.
      Parameters:
      angle - rotation Angle
      Returns:
      this for convenience
    • rotateCCW

      public Ring rotateCCW(Angle angle, double cx, double cy)
      Directly rotates this Ring counter-clock-wise around the given point (specified by cx and cy) by the given Angle. Direct adaptation means, that this PolyBezier is modified in-place.
      Parameters:
      angle - rotation Angle
      cx - x-coordinate of the Point to rotate around
      cy - y-coordinate of the Point to rotate around
      Returns:
      this for convenience
    • rotateCCW

      public Ring rotateCCW(Angle angle, Point center)
      Directly rotates this Ring counter-clock-wise around the given Point by the given Angle. Direct adaptation means, that this PolyBezier is modified in-place.
      Parameters:
      angle - rotation Angle
      center - Point to rotate around
      Returns:
      this for convenience
    • rotateCW

      public Ring rotateCW(Angle angle)
      Directly rotates this Ring clock-wise around its center Point by the given Angle. Direct adaptation means, that this PolyBezier is modified in-place.
      Parameters:
      angle - rotation Angle
      Returns:
      this for convenience
    • rotateCW

      public Ring rotateCW(Angle angle, double cx, double cy)
      Directly rotates this Ring clock-wise around the given point (specified by cx and cy) by the given Angle. Direct adaptation means, that this PolyBezier is modified in-place.
      Parameters:
      angle - rotation Angle
      cx - x-coordinate of the Point to rotate around
      cy - y-coordinate of the Point to rotate around
      Returns:
      this for convenience
    • rotateCW

      public Ring rotateCW(Angle angle, Point center)
      Directly rotates this Ring clock-wise around the given Point by the given Angle. Direct adaptation means, that this PolyBezier is modified in-place.
      Parameters:
      angle - rotation Angle
      center - Point to rotate around
      Returns:
      this for convenience
    • scale

      public Ring scale(double factor)
      Description copied from interface: IScalable
      Scales the calling object by the given factor relative to its center Point.
      Specified by:
      scale in interface IScalable<Ring>
      Parameters:
      factor - scale-factor
      Returns:
      this for convenience
    • scale

      public Ring scale(double fx, double fy)
      Description copied from interface: IScalable
      Scales the calling object by the given factors relative to the given center Point.
      Specified by:
      scale in interface IScalable<Ring>
      Parameters:
      fx - x-scale-factor
      fy - y-scale-factor
      Returns:
      this for convenience
    • scale

      public Ring scale(double factor, double cx, double cy)
      Description copied from interface: IScalable
      Scales the calling object by the given factor relative to the given center Point (cx, cy).
      Specified by:
      scale in interface IScalable<Ring>
      Parameters:
      factor - scale-factor
      cx - x-coordinate of the relative Point for the scaling
      cy - y-coordinate of the relative Point for the scaling
      Returns:
      this for convenience
    • scale

      public Ring scale(double fx, double fy, double cx, double cy)
      Description copied from interface: IScalable
      Scales the calling object by the given factors relative to the given center Point (cx, cy).
      Specified by:
      scale in interface IScalable<Ring>
      Parameters:
      fx - x-scale-factor
      fy - y-scale-factor
      cx - x-coordinate of the relative Point for the scaling
      cy - y-coordinate of the relative Point for the scaling
      Returns:
      this for convenience
    • scale

      public Ring scale(double fx, double fy, Point center)
      Description copied from interface: IScalable
      Scales the calling object by the given factors relative to the given center Point.
      Specified by:
      scale in interface IScalable<Ring>
      Parameters:
      fx - x-scale-factor
      fy - y-scale-factor
      center - relative Point for the scaling
      Returns:
      this for convenience
    • scale

      public Ring scale(double factor, Point center)
      Description copied from interface: IScalable
      Scales the calling object by the given factor relative to the given center Point.
      Specified by:
      scale in interface IScalable<Ring>
      Parameters:
      factor - scale-factor
      center - relative Point for the scaling
      Returns:
      this for convenience
    • translate

      public Ring translate(double dx, double dy)
      Description copied from interface: ITranslatable
      Translates the object by the given values in x and y direction.
      Specified by:
      translate in interface ITranslatable<Ring>
      Parameters:
      dx - x-translation
      dy - y-translation
      Returns:
      this for convenience
    • translate

      public Ring translate(Point d)
      Description copied from interface: ITranslatable
      Translates the object by the given Point.
      Specified by:
      translate in interface ITranslatable<Ring>
      Parameters:
      d - translation Point
      Returns:
      this for convenience
    • contains

      public boolean contains(Point p)
      Description copied from interface: IGeometry
      Returns whether the given Point is contained within this IGeometry. This includes the case that the Point lies on the border of this IGeometry.
      Specified by:
      contains in interface IGeometry
      Parameters:
      p - The Point being tested for containment
      Returns:
      true if the Point is contained within this IGeometry, false otherwise.
    • getOutlines

      public Polyline[] getOutlines()
      Description copied from interface: IMultiShape

      Computes the outlines of this IMultiShape.

      The outlines are returned as an array of ICurves. For every closed outline of this IMultiShape one ICurve is returned.

      Specified by:
      getOutlines in interface IMultiShape
      Returns:
      an array of ICurves, one for each closed outline
    • getOutlineSegments

      public Line[] getOutlineSegments()

      Computes the outline segments of this AbstractMultiShape.

      The outline segments of this AbstractMultiShape are those outline segments of the internal IShapes that only exist once.

      Specified by:
      getOutlineSegments in interface IMultiShape
      Returns:
      the outline segments of this AbstractMultiShape
    • toPath

      public Path toPath()
      Description copied from interface: IGeometry
      Converts this IGeometry into a Path representation.
      Specified by:
      toPath in interface IGeometry
      Returns:
      A new Path representation for this IGeometry.
    • clone

      public Object clone()
      Overridden with public visibility as recommended within Cloneable .
      Overrides:
      clone in class Object
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
      See Also:
    • touches

      public boolean touches(IGeometry g)
      Description copied from interface: IGeometry
      Returns true if the input IGeometry touches this IGeometry, i.e. there is at least one common point.
      Specified by:
      touches in interface IGeometry
      Parameters:
      g - The IGeometry for the intersection test
      Returns:
      true if the input IGeometry and this IGeometry have at least one common point.