Class MarkerShapePainter

java.lang.Object
org.apache.batik.gvt.MarkerShapePainter
All Implemented Interfaces:
ShapePainter

public class MarkerShapePainter extends Object implements ShapePainter
A shape painter that can be used to paint markers on a shape.
Version:
$Id: MarkerShapePainter.java 1808888 2017-09-19 14:22:11Z ssteiner $
  • Field Details

    • extShape

      protected ExtendedShape extShape
      The Shape to be painted.
    • startMarker

      protected Marker startMarker
      Start Marker
    • middleMarker

      protected Marker middleMarker
      Middle Marker
    • endMarker

      protected Marker endMarker
      End Marker
    • startMarkerProxy

      private ProxyGraphicsNode startMarkerProxy
      Start marker proxy.
    • middleMarkerProxies

      private ProxyGraphicsNode[] middleMarkerProxies
      Middle marker proxy.
    • endMarkerProxy

      private ProxyGraphicsNode endMarkerProxy
      End marker proxy.
    • markerGroup

      private CompositeGraphicsNode markerGroup
      Contains the various marker proxies.
    • dPrimitiveBounds

      private Rectangle2D dPrimitiveBounds
      Internal Cache: Primitive bounds
    • dGeometryBounds

      private Rectangle2D dGeometryBounds
      Internal Cache: Geometry bounds
  • Constructor Details

    • MarkerShapePainter

      public MarkerShapePainter(Shape shape)
      Constructs a new MarkerShapePainter that can be used to markers on top of a shape.
      Parameters:
      shape - Shape to be painted by this painter. Should not be null
  • Method Details

    • paint

      public void paint(Graphics2D g2d)
      Paints the specified shape using the specified Graphics2D.
      Specified by:
      paint in interface ShapePainter
      Parameters:
      g2d - the Graphics2D to use
    • getPaintedArea

      public Shape getPaintedArea()
      Returns the area painted by this shape painter.
      Specified by:
      getPaintedArea in interface ShapePainter
    • getPaintedBounds2D

      public Rectangle2D getPaintedBounds2D()
      Returns the bounds of the area painted by this shape painter
      Specified by:
      getPaintedBounds2D in interface ShapePainter
    • inPaintedArea

      public boolean inPaintedArea(Point2D pt)
      Returns true if pt is in the area painted by this shape painter
      Specified by:
      inPaintedArea in interface ShapePainter
    • getSensitiveArea

      public Shape getSensitiveArea()
      Returns the area covered by this shape painter (even if not painted). This is always null for Markers.
      Specified by:
      getSensitiveArea in interface ShapePainter
    • getSensitiveBounds2D

      public Rectangle2D getSensitiveBounds2D()
      Returns the bounds of the area covered by this shape painte (even if not painted). This is always null for Markers.
      Specified by:
      getSensitiveBounds2D in interface ShapePainter
    • inSensitiveArea

      public boolean inSensitiveArea(Point2D pt)
      Returns true if pt is in the sensitive area. This is always false for Markers.
      Specified by:
      inSensitiveArea in interface ShapePainter
    • setShape

      public void setShape(Shape shape)
      Sets the Shape this shape painter is associated with.
      Specified by:
      setShape in interface ShapePainter
      Parameters:
      shape - new shape this painter should be associated with. Should not be null.
    • getExtShape

      public ExtendedShape getExtShape()
      Gets the Shape this shape painter is associated with as an Extended Shape.
      Returns:
      shape associated with this painter
    • getShape

      public Shape getShape()
      Gets the Shape this shape painter is associated with.
      Specified by:
      getShape in interface ShapePainter
      Returns:
      shape associated with this painter
    • getStartMarker

      public Marker getStartMarker()
      Returns the marker that shall be drawn at the first vertex of the given shape.
    • setStartMarker

      public void setStartMarker(Marker startMarker)
      Sets the marker that shall be drawn at the first vertex of the given shape.
      Parameters:
      startMarker - the start marker
    • getMiddleMarker

      public Marker getMiddleMarker()
      Returns the marker that shall be drawn at every other vertex (not the first or the last one) of the given shape.
    • setMiddleMarker

      public void setMiddleMarker(Marker middleMarker)
      Sets the marker that shall be drawn at every other vertex (not the first or the last one) of the given shape.
      Parameters:
      middleMarker - the middle marker
    • getEndMarker

      public Marker getEndMarker()
      Returns the marker that shall be drawn at the last vertex of the given shape.
    • setEndMarker

      public void setEndMarker(Marker endMarker)
      Sets the marker that shall be drawn at the last vertex of the given shape.
      Parameters:
      endMarker - the end marker
    • buildMarkerGroup

      protected void buildMarkerGroup()
      Builds a new marker group with the current set of markers.
    • buildStartMarkerProxy

      protected ProxyGraphicsNode buildStartMarkerProxy()
      Builds a proxy GraphicsNode for the input Marker to be drawn at the start position
    • buildEndMarkerProxy

      protected ProxyGraphicsNode buildEndMarkerProxy()
      Builds a proxy GraphicsNode for the input Marker to be drawn at the end position.
    • buildMiddleMarkerProxies

      protected ProxyGraphicsNode[] buildMiddleMarkerProxies()
      Builds a proxy GraphicsNode for the input Marker to be drawn at the middle positions
    • createMiddleMarker

      private ProxyGraphicsNode createMiddleMarker(double[] prev, int prevSegType, double[] curr, int currSegType, double[] next, int nextSegType)
      Creates a ProxyGraphicsNode for a middle marker.
    • computeRotation

      private double computeRotation(double[] prev, int prevSegType, double[] curr, int currSegType, double[] next, int nextSegType)
      Returns the rotation according to the specified parameters in degrees.
    • computeInSlope

      private double[] computeInSlope(double[] prev, int prevSegType, double[] curr, int currSegType)
      Returns dx/dy for the in slope.
    • computeOutSlope

      private double[] computeOutSlope(double[] curr, int currSegType, double[] next, int nextSegType)
      Returns dx/dy for the out slope.
    • normalize

      public double[] normalize(double[] v)
      Normalizes the input vector. This assumes an non-zero length
    • computeMarkerTransform

      private AffineTransform computeMarkerTransform(Marker marker, Point2D markerPosition, double rotation)
      Computes the transform for the input marker, so that it is positioned at the given position with the specified rotation
    • getSegmentTerminatingPoint

      protected Point2D getSegmentTerminatingPoint(double[] coords, int segType)
      Extracts the terminating point, depending on the segment type.