Package org.apache.batik.gvt
Class MarkerShapePainter
- java.lang.Object
-
- org.apache.batik.gvt.MarkerShapePainter
-
- All Implemented Interfaces:
ShapePainter
public class MarkerShapePainter extends java.lang.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 Summary
Fields Modifier and Type Field Description private java.awt.geom.Rectangle2DdGeometryBoundsInternal Cache: Geometry boundsprivate java.awt.geom.Rectangle2DdPrimitiveBoundsInternal Cache: Primitive boundsprotected MarkerendMarkerEnd Markerprivate ProxyGraphicsNodeendMarkerProxyEnd marker proxy.protected ExtendedShapeextShapeThe Shape to be painted.private CompositeGraphicsNodemarkerGroupContains the various marker proxies.protected MarkermiddleMarkerMiddle Markerprivate ProxyGraphicsNode[]middleMarkerProxiesMiddle marker proxy.protected MarkerstartMarkerStart Markerprivate ProxyGraphicsNodestartMarkerProxyStart marker proxy.
-
Constructor Summary
Constructors Constructor Description MarkerShapePainter(java.awt.Shape shape)Constructs a newMarkerShapePainterthat can be used to markers on top of a shape.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ProxyGraphicsNodebuildEndMarkerProxy()Builds a proxyGraphicsNodefor the inputMarkerto be drawn at the end position.protected voidbuildMarkerGroup()Builds a new marker group with the current set of markers.protected ProxyGraphicsNode[]buildMiddleMarkerProxies()Builds a proxyGraphicsNodefor the inputMarkerto be drawn at the middle positionsprotected ProxyGraphicsNodebuildStartMarkerProxy()Builds a proxyGraphicsNodefor the inputMarkerto be drawn at the start positionprivate double[]computeInSlope(double[] prev, int prevSegType, double[] curr, int currSegType)Returns dx/dy for the in slope.private java.awt.geom.AffineTransformcomputeMarkerTransform(Marker marker, java.awt.geom.Point2D markerPosition, double rotation)Computes the transform for the input marker, so that it is positioned at the given position with the specified rotationprivate double[]computeOutSlope(double[] curr, int currSegType, double[] next, int nextSegType)Returns dx/dy for the out slope.private doublecomputeRotation(double[] prev, int prevSegType, double[] curr, int currSegType, double[] next, int nextSegType)Returns the rotation according to the specified parameters in degrees.private ProxyGraphicsNodecreateMiddleMarker(double[] prev, int prevSegType, double[] curr, int currSegType, double[] next, int nextSegType)Creates a ProxyGraphicsNode for a middle marker.MarkergetEndMarker()Returns the marker that shall be drawn at the last vertex of the given shape.ExtendedShapegetExtShape()Gets the Shape this shape painter is associated with as an Extended Shape.MarkergetMiddleMarker()Returns the marker that shall be drawn at every other vertex (not the first or the last one) of the given shape.java.awt.ShapegetPaintedArea()Returns the area painted by this shape painter.java.awt.geom.Rectangle2DgetPaintedBounds2D()Returns the bounds of the area painted by this shape painterprotected java.awt.geom.Point2DgetSegmentTerminatingPoint(double[] coords, int segType)Extracts the terminating point, depending on the segment type.java.awt.ShapegetSensitiveArea()Returns the area covered by this shape painter (even if not painted).java.awt.geom.Rectangle2DgetSensitiveBounds2D()Returns the bounds of the area covered by this shape painte (even if not painted).java.awt.ShapegetShape()Gets the Shape this shape painter is associated with.MarkergetStartMarker()Returns the marker that shall be drawn at the first vertex of the given shape.booleaninPaintedArea(java.awt.geom.Point2D pt)Returns true if pt is in the area painted by this shape painterbooleaninSensitiveArea(java.awt.geom.Point2D pt)Returns true if pt is in the sensitive area.double[]normalize(double[] v)Normalizes the input vector.voidpaint(java.awt.Graphics2D g2d)Paints the specified shape using the specified Graphics2D.voidsetEndMarker(Marker endMarker)Sets the marker that shall be drawn at the last vertex of the given shape.voidsetMiddleMarker(Marker middleMarker)Sets the marker that shall be drawn at every other vertex (not the first or the last one) of the given shape.voidsetShape(java.awt.Shape shape)Sets the Shape this shape painter is associated with.voidsetStartMarker(Marker startMarker)Sets the marker that shall be drawn at the first vertex of the given shape.
-
-
-
Field Detail
-
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 java.awt.geom.Rectangle2D dPrimitiveBounds
Internal Cache: Primitive bounds
-
dGeometryBounds
private java.awt.geom.Rectangle2D dGeometryBounds
Internal Cache: Geometry bounds
-
-
Method Detail
-
paint
public void paint(java.awt.Graphics2D g2d)
Paints the specified shape using the specified Graphics2D.- Specified by:
paintin interfaceShapePainter- Parameters:
g2d- the Graphics2D to use
-
getPaintedArea
public java.awt.Shape getPaintedArea()
Returns the area painted by this shape painter.- Specified by:
getPaintedAreain interfaceShapePainter
-
getPaintedBounds2D
public java.awt.geom.Rectangle2D getPaintedBounds2D()
Returns the bounds of the area painted by this shape painter- Specified by:
getPaintedBounds2Din interfaceShapePainter
-
inPaintedArea
public boolean inPaintedArea(java.awt.geom.Point2D pt)
Returns true if pt is in the area painted by this shape painter- Specified by:
inPaintedAreain interfaceShapePainter
-
getSensitiveArea
public java.awt.Shape getSensitiveArea()
Returns the area covered by this shape painter (even if not painted). This is always null for Markers.- Specified by:
getSensitiveAreain interfaceShapePainter
-
getSensitiveBounds2D
public java.awt.geom.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:
getSensitiveBounds2Din interfaceShapePainter
-
inSensitiveArea
public boolean inSensitiveArea(java.awt.geom.Point2D pt)
Returns true if pt is in the sensitive area. This is always false for Markers.- Specified by:
inSensitiveAreain interfaceShapePainter
-
setShape
public void setShape(java.awt.Shape shape)
Sets the Shape this shape painter is associated with.- Specified by:
setShapein interfaceShapePainter- 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 java.awt.Shape getShape()
Gets the Shape this shape painter is associated with.- Specified by:
getShapein interfaceShapePainter- 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 proxyGraphicsNodefor the inputMarkerto be drawn at the start position
-
buildEndMarkerProxy
protected ProxyGraphicsNode buildEndMarkerProxy()
Builds a proxyGraphicsNodefor the inputMarkerto be drawn at the end position.
-
buildMiddleMarkerProxies
protected ProxyGraphicsNode[] buildMiddleMarkerProxies()
Builds a proxyGraphicsNodefor the inputMarkerto 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 java.awt.geom.AffineTransform computeMarkerTransform(Marker marker, java.awt.geom.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 java.awt.geom.Point2D getSegmentTerminatingPoint(double[] coords, int segType)Extracts the terminating point, depending on the segment type.
-
-