Package org.apache.batik.gvt
Class AbstractGraphicsNode
- java.lang.Object
-
- org.apache.batik.gvt.AbstractGraphicsNode
-
- All Implemented Interfaces:
GraphicsNode
- Direct Known Subclasses:
CompositeGraphicsNode,MultiResGraphicsNode,ProxyGraphicsNode,RasterImageNode,ShapeNode,SVGPatternElementBridge.PatternGraphicsNode,TextNode
public abstract class AbstractGraphicsNode extends java.lang.Object implements GraphicsNode
A partial implementation of theGraphicsNodeinterface.- Version:
- $Id: AbstractGraphicsNode.java 1808888 2017-09-19 14:22:11Z ssteiner $
-
-
Field Summary
Fields Modifier and Type Field Description private java.awt.geom.Rectangle2DboundsInternal Cache: node boundsprotected GraphicsNodeChangeEventchangeCompletedEventprotected GraphicsNodeChangeEventchangeStartedEventprotected ClipRableclipThe clipping filter for this graphics node.protected java.awt.CompositecompositeThe compositing operation to be used when a graphics node is painted on top of another one.protected java.lang.ref.WeakReferenceenableBackgroundGraphicsNodeRableThe GraphicsNodeRable for this node with all filtering applied(package private) static doubleEPSILONprotected FilterfilterThe filter of this graphics node.protected java.lang.ref.WeakReferencegraphicsNodeRableThe GraphicsNodeRable for this node.protected java.awt.RenderingHintshintsThe rendering hints that control the quality to use when rendering this graphics node.protected java.awt.geom.AffineTransforminverseTransformThe inverse transform for this node, i.e., from parent node to this node.protected booleanisVisibleThis flag bit indicates whether or not this graphics node is visible.protected javax.swing.event.EventListenerListlistenersThe listeners list.protected MaskmaskThe mask of this graphics node.protected CompositeGraphicsNodeparentThe parent of this graphics node.protected intpointerEventTypeIndicates how this graphics node reacts to events.protected RootGraphicsNoderootThe root of the GVT tree.protected java.awt.geom.AffineTransformtransformThe transform of this graphics node.protected java.lang.ref.WeakReferenceweakRefA Weak Reference to this.-
Fields inherited from interface org.apache.batik.gvt.GraphicsNode
ALL, FILL, IDENTITY, NONE, PAINTED, STROKE, VISIBLE, VISIBLE_FILL, VISIBLE_PAINTED, VISIBLE_STROKE
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractGraphicsNode()Constructs a new graphics node.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancontains(java.awt.geom.Point2D p)Returns true if the specified Point2D is inside the boundary of this node, false otherwise.voidfireGraphicsNodeChangeCompleted()voidfireGraphicsNodeChangeStarted()voidfireGraphicsNodeChangeStarted(GraphicsNodeChangeEvent changeStartedEvent)voidfireGraphicsNodeChangeStarted(GraphicsNode changeSrc)java.awt.geom.Rectangle2DgetBounds()Returns the bounds of this node in user space.ClipRablegetClip()Returns the clipping filter of this node or null if any.java.awt.CompositegetComposite()Returns the composite of this node or null if any.FiltergetEnableBackgroundGraphicsNodeRable(boolean createIfNeeded)Returns the GraphicsNodeRable for this node.FiltergetFilter()Returns the filter of this node or null if any.java.awt.geom.AffineTransformgetGlobalTransform()Returns the concatenated transform of this node.FiltergetGraphicsNodeRable(boolean createIfNeeded)Returns the GraphicsNodeRable for this node.java.awt.geom.AffineTransformgetInverseTransform()Returns the inverse transform for this node.MaskgetMask()Returns the mask of this node or null if any.CompositeGraphicsNodegetParent()Returns the parent of this node or null if any.intgetPointerEventType()Returns the type that describes how this graphics node reacts to events.java.awt.RenderingHintsgetRenderingHints()Returns the rendering hints of this node or null if any.RootGraphicsNodegetRoot()Returns the root of the GVT tree or null if the node is not part of a GVT tree.java.awt.geom.AffineTransformgetTransform()Returns the transform of this node or null if any.java.awt.geom.Rectangle2DgetTransformedBounds(java.awt.geom.AffineTransform txf)Returns the bounds of this node after applying the input transform (if any), concatenated with this node's transform (if any).java.awt.geom.Rectangle2DgetTransformedGeometryBounds(java.awt.geom.AffineTransform txf)Returns the bounds of the area covered by this node, without taking any of its rendering attribute into accoun.java.awt.geom.Rectangle2DgetTransformedPrimitiveBounds(java.awt.geom.AffineTransform txf)Returns the bounds of this node's primitivePaint after applying the input transform (if any), concatenated with this node's transform (if any).java.awt.geom.Rectangle2DgetTransformedSensitiveBounds(java.awt.geom.AffineTransform txf)Returns the bounds of the sensitive area covered by this node, This includes the stroked area but does not include the effects of clipping, masking or filtering.java.lang.ref.WeakReferencegetWeakReference()Returns a canonical WeakReference to this GraphicsNode.booleanintersects(java.awt.geom.Rectangle2D r)Returns true if the interior of this node intersects the interior of a specified Rectangle2D, false otherwise.protected voidinvalidateGeometryCache()Invalidates the cached geometric bounds.protected booleanisAntialiasedClip(java.awt.geom.AffineTransform usr2dev, java.awt.RenderingHints hints, java.awt.Shape clip)Returns true if there is a clip and it should be antialiasedprotected booleanisOffscreenBufferNeeded()Returns true of an offscreen buffer is needed to render this node, false otherwise.booleanisVisible()Returns true if this node is visible, false otherwise.GraphicsNodenodeHitAt(java.awt.geom.Point2D p)Returns the GraphicsNode containing point p if this node or one of its children is sensitive to mouse events at p.protected java.awt.geom.Rectangle2DnormalizeRectangle(java.awt.geom.Rectangle2D bounds)This method makes sure that neither the width nor height of the rectangle is zero.voidpaint(java.awt.Graphics2D g2d)Paints this node.voidsetClip(ClipRable newClipper)Sets the clipping filter of this node.voidsetComposite(java.awt.Composite newComposite)Sets the composite of this node.voidsetFilter(Filter newFilter)Sets the filter of this node.voidsetMask(Mask newMask)Sets the mask of this node.protected voidsetParent(CompositeGraphicsNode newParent)Sets the parent node of this graphics node.voidsetPointerEventType(int pointerEventType)Sets the type that describes how this graphics node reacts to events.voidsetRenderingHint(java.awt.RenderingHints.Key key, java.lang.Object value)Maps the specified key to the specified value in the rendering hints of this node.voidsetRenderingHints(java.awt.RenderingHints newHints)Sets the rendering hints of this node.voidsetRenderingHints(java.util.Map hints)Copies all of the mappings from the specified Map to the rendering hints of this node.protected voidsetRoot(RootGraphicsNode newRoot)Sets the root node of this graphics node.voidsetTransform(java.awt.geom.AffineTransform newTransform)Sets the transform of this node.voidsetVisible(boolean isVisible)Sets if this node is visible or not depending on the specified value.private voidtraceFilter(Filter filter, java.lang.String prefix)DEBUG: Trace filter chain-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.batik.gvt.GraphicsNode
getGeometryBounds, getOutline, getPrimitiveBounds, getSensitiveBounds, primitivePaint
-
-
-
-
Field Detail
-
listeners
protected javax.swing.event.EventListenerList listeners
The listeners list.
-
transform
protected java.awt.geom.AffineTransform transform
The transform of this graphics node.
-
inverseTransform
protected java.awt.geom.AffineTransform inverseTransform
The inverse transform for this node, i.e., from parent node to this node.
-
composite
protected java.awt.Composite composite
The compositing operation to be used when a graphics node is painted on top of another one.
-
isVisible
protected boolean isVisible
This flag bit indicates whether or not this graphics node is visible.
-
clip
protected ClipRable clip
The clipping filter for this graphics node.
-
hints
protected java.awt.RenderingHints hints
The rendering hints that control the quality to use when rendering this graphics node.
-
parent
protected CompositeGraphicsNode parent
The parent of this graphics node.
-
root
protected RootGraphicsNode root
The root of the GVT tree.
-
mask
protected Mask mask
The mask of this graphics node.
-
filter
protected Filter filter
The filter of this graphics node.
-
pointerEventType
protected int pointerEventType
Indicates how this graphics node reacts to events.
-
graphicsNodeRable
protected java.lang.ref.WeakReference graphicsNodeRable
The GraphicsNodeRable for this node.
-
enableBackgroundGraphicsNodeRable
protected java.lang.ref.WeakReference enableBackgroundGraphicsNodeRable
The GraphicsNodeRable for this node with all filtering applied
-
weakRef
protected java.lang.ref.WeakReference weakRef
A Weak Reference to this.
-
bounds
private java.awt.geom.Rectangle2D bounds
Internal Cache: node bounds
-
changeStartedEvent
protected GraphicsNodeChangeEvent changeStartedEvent
-
changeCompletedEvent
protected GraphicsNodeChangeEvent changeCompletedEvent
-
EPSILON
static double EPSILON
-
-
Method Detail
-
getWeakReference
public java.lang.ref.WeakReference getWeakReference()
Returns a canonical WeakReference to this GraphicsNode. This is suitable for use as a key value in a hash map- Specified by:
getWeakReferencein interfaceGraphicsNode
-
getPointerEventType
public int getPointerEventType()
Returns the type that describes how this graphics node reacts to events.- Specified by:
getPointerEventTypein interfaceGraphicsNode- Returns:
- VISIBLE_PAINTED | VISIBLE_FILL | VISIBLE_STROKE | VISIBLE | PAINTED | FILL | STROKE | ALL | NONE
-
setPointerEventType
public void setPointerEventType(int pointerEventType)
Sets the type that describes how this graphics node reacts to events.- Specified by:
setPointerEventTypein interfaceGraphicsNode- Parameters:
pointerEventType- VISIBLE_PAINTED | VISIBLE_FILL | VISIBLE_STROKE | VISIBLE | PAINTED | FILL | STROKE | ALL | NONE
-
setTransform
public void setTransform(java.awt.geom.AffineTransform newTransform)
Sets the transform of this node.- Specified by:
setTransformin interfaceGraphicsNode- Parameters:
newTransform- the new transform of this node
-
getTransform
public java.awt.geom.AffineTransform getTransform()
Returns the transform of this node or null if any.- Specified by:
getTransformin interfaceGraphicsNode
-
getInverseTransform
public java.awt.geom.AffineTransform getInverseTransform()
Returns the inverse transform for this node.- Specified by:
getInverseTransformin interfaceGraphicsNode
-
getGlobalTransform
public java.awt.geom.AffineTransform getGlobalTransform()
Returns the concatenated transform of this node. That is, this node's transform preconcatenated with it's parent's transforms.- Specified by:
getGlobalTransformin interfaceGraphicsNode
-
setComposite
public void setComposite(java.awt.Composite newComposite)
Sets the composite of this node.- Specified by:
setCompositein interfaceGraphicsNode- Parameters:
newComposite- the composite of this node
-
getComposite
public java.awt.Composite getComposite()
Returns the composite of this node or null if any.- Specified by:
getCompositein interfaceGraphicsNode
-
setVisible
public void setVisible(boolean isVisible)
Sets if this node is visible or not depending on the specified value.- Specified by:
setVisiblein interfaceGraphicsNode- Parameters:
isVisible- If true this node is visible
-
isVisible
public boolean isVisible()
Returns true if this node is visible, false otherwise.- Specified by:
isVisiblein interfaceGraphicsNode
-
setClip
public void setClip(ClipRable newClipper)
Description copied from interface:GraphicsNodeSets the clipping filter of this node.- Specified by:
setClipin interfaceGraphicsNode- Parameters:
newClipper- the new clipping filter of this node
-
getClip
public ClipRable getClip()
Returns the clipping filter of this node or null if any.- Specified by:
getClipin interfaceGraphicsNode
-
setRenderingHint
public void setRenderingHint(java.awt.RenderingHints.Key key, java.lang.Object value)Maps the specified key to the specified value in the rendering hints of this node.- Specified by:
setRenderingHintin interfaceGraphicsNode- Parameters:
key- the key of the hint to be setvalue- the value indicating preferences for the specified hint category.
-
setRenderingHints
public void setRenderingHints(java.util.Map hints)
Copies all of the mappings from the specified Map to the rendering hints of this node.- Specified by:
setRenderingHintsin interfaceGraphicsNode- Parameters:
hints- the rendering hints to be set
-
setRenderingHints
public void setRenderingHints(java.awt.RenderingHints newHints)
Sets the rendering hints of this node.- Specified by:
setRenderingHintsin interfaceGraphicsNode- Parameters:
newHints- the new rendering hints of this node
-
getRenderingHints
public java.awt.RenderingHints getRenderingHints()
Returns the rendering hints of this node or null if any.- Specified by:
getRenderingHintsin interfaceGraphicsNode
-
setMask
public void setMask(Mask newMask)
Sets the mask of this node.- Specified by:
setMaskin interfaceGraphicsNode- Parameters:
newMask- the new mask of this node
-
getMask
public Mask getMask()
Returns the mask of this node or null if any.- Specified by:
getMaskin interfaceGraphicsNode
-
setFilter
public void setFilter(Filter newFilter)
Sets the filter of this node.- Specified by:
setFilterin interfaceGraphicsNode- Parameters:
newFilter- the new filter of this node
-
getFilter
public Filter getFilter()
Returns the filter of this node or null if any.- Specified by:
getFilterin interfaceGraphicsNode
-
getGraphicsNodeRable
public Filter getGraphicsNodeRable(boolean createIfNeeded)
Returns the GraphicsNodeRable for this node. This GraphicsNodeRable is the Renderable (Filter) before any of the filter operations have been applied.- Specified by:
getGraphicsNodeRablein interfaceGraphicsNode
-
getEnableBackgroundGraphicsNodeRable
public Filter getEnableBackgroundGraphicsNodeRable(boolean createIfNeeded)
Returns the GraphicsNodeRable for this node. This GraphicsNodeRable is the Renderable (Filter) after all of the filter operations have been applied.- Specified by:
getEnableBackgroundGraphicsNodeRablein interfaceGraphicsNode
-
paint
public void paint(java.awt.Graphics2D g2d)
Paints this node.- Specified by:
paintin interfaceGraphicsNode- Parameters:
g2d- the Graphics2D to use
-
traceFilter
private void traceFilter(Filter filter, java.lang.String prefix)
DEBUG: Trace filter chain
-
isOffscreenBufferNeeded
protected boolean isOffscreenBufferNeeded()
Returns true of an offscreen buffer is needed to render this node, false otherwise.
-
isAntialiasedClip
protected boolean isAntialiasedClip(java.awt.geom.AffineTransform usr2dev, java.awt.RenderingHints hints, java.awt.Shape clip)Returns true if there is a clip and it should be antialiased
-
fireGraphicsNodeChangeStarted
public void fireGraphicsNodeChangeStarted(GraphicsNode changeSrc)
-
fireGraphicsNodeChangeStarted
public void fireGraphicsNodeChangeStarted()
-
fireGraphicsNodeChangeStarted
public void fireGraphicsNodeChangeStarted(GraphicsNodeChangeEvent changeStartedEvent)
-
fireGraphicsNodeChangeCompleted
public void fireGraphicsNodeChangeCompleted()
-
getParent
public CompositeGraphicsNode getParent()
Returns the parent of this node or null if any.- Specified by:
getParentin interfaceGraphicsNode
-
getRoot
public RootGraphicsNode getRoot()
Returns the root of the GVT tree or null if the node is not part of a GVT tree.- Specified by:
getRootin interfaceGraphicsNode
-
setRoot
protected void setRoot(RootGraphicsNode newRoot)
Sets the root node of this graphics node.- Parameters:
newRoot- the new root node of this node
-
setParent
protected void setParent(CompositeGraphicsNode newParent)
Sets the parent node of this graphics node.- Parameters:
newParent- the new parent node of this node
-
invalidateGeometryCache
protected void invalidateGeometryCache()
Invalidates the cached geometric bounds. This method is called each time an attribute that affects the bounds of this node changed.
-
getBounds
public java.awt.geom.Rectangle2D getBounds()
Returns the bounds of this node in user space. This includes primitive paint, filtering, clipping and masking.- Specified by:
getBoundsin interfaceGraphicsNode
-
getTransformedBounds
public java.awt.geom.Rectangle2D getTransformedBounds(java.awt.geom.AffineTransform txf)
Returns the bounds of this node after applying the input transform (if any), concatenated with this node's transform (if any).- Specified by:
getTransformedBoundsin interfaceGraphicsNode- Parameters:
txf- the affine transform with which this node's transform should be concatenated. Should not be null.
-
getTransformedPrimitiveBounds
public java.awt.geom.Rectangle2D getTransformedPrimitiveBounds(java.awt.geom.AffineTransform txf)
Returns the bounds of this node's primitivePaint after applying the input transform (if any), concatenated with this node's transform (if any).- Specified by:
getTransformedPrimitiveBoundsin interfaceGraphicsNode- Parameters:
txf- the affine transform with which this node's transform should be concatenated. Should not be null.
-
getTransformedGeometryBounds
public java.awt.geom.Rectangle2D getTransformedGeometryBounds(java.awt.geom.AffineTransform txf)
Returns the bounds of the area covered by this node, without taking any of its rendering attribute into accoun. That is, exclusive of any clipping, masking, filtering or stroking, for example. The returned value is transformed by the concatenation of the input transform and this node's transform.- Specified by:
getTransformedGeometryBoundsin interfaceGraphicsNode- Parameters:
txf- the affine transform with which this node's transform should be concatenated. Should not be null.
-
getTransformedSensitiveBounds
public java.awt.geom.Rectangle2D getTransformedSensitiveBounds(java.awt.geom.AffineTransform txf)
Returns the bounds of the sensitive area covered by this node, This includes the stroked area but does not include the effects of clipping, masking or filtering. The returned value is transformed by the concatenation of the input transform and this node's transform.- Specified by:
getTransformedSensitiveBoundsin interfaceGraphicsNode- Parameters:
txf- the affine transform with which this node's transform should be concatenated. Should not be null.
-
contains
public boolean contains(java.awt.geom.Point2D p)
Returns true if the specified Point2D is inside the boundary of this node, false otherwise.- Specified by:
containsin interfaceGraphicsNode- Parameters:
p- the specified Point2D in the user space
-
intersects
public boolean intersects(java.awt.geom.Rectangle2D r)
Returns true if the interior of this node intersects the interior of a specified Rectangle2D, false otherwise.- Specified by:
intersectsin interfaceGraphicsNode- Parameters:
r- the specified Rectangle2D in the user node space
-
nodeHitAt
public GraphicsNode nodeHitAt(java.awt.geom.Point2D p)
Returns the GraphicsNode containing point p if this node or one of its children is sensitive to mouse events at p.- Specified by:
nodeHitAtin interfaceGraphicsNode- Parameters:
p- the specified Point2D in the user space
-
normalizeRectangle
protected java.awt.geom.Rectangle2D normalizeRectangle(java.awt.geom.Rectangle2D bounds)
This method makes sure that neither the width nor height of the rectangle is zero. But it tries to make them very small relatively speaking.
-
-