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 theGraphicsNode
interface.- Version:
- $Id: AbstractGraphicsNode.java 1808888 2017-09-19 14:22:11Z ssteiner $
-
-
Field Summary
Fields Modifier and Type Field Description private java.awt.geom.Rectangle2D
bounds
Internal Cache: node boundsprotected GraphicsNodeChangeEvent
changeCompletedEvent
protected GraphicsNodeChangeEvent
changeStartedEvent
protected ClipRable
clip
The clipping filter for this graphics node.protected java.awt.Composite
composite
The compositing operation to be used when a graphics node is painted on top of another one.protected java.lang.ref.WeakReference
enableBackgroundGraphicsNodeRable
The GraphicsNodeRable for this node with all filtering applied(package private) static double
EPSILON
protected Filter
filter
The filter of this graphics node.protected java.lang.ref.WeakReference
graphicsNodeRable
The GraphicsNodeRable for this node.protected java.awt.RenderingHints
hints
The rendering hints that control the quality to use when rendering this graphics node.protected java.awt.geom.AffineTransform
inverseTransform
The inverse transform for this node, i.e., from parent node to this node.protected boolean
isVisible
This flag bit indicates whether or not this graphics node is visible.protected javax.swing.event.EventListenerList
listeners
The listeners list.protected Mask
mask
The mask of this graphics node.protected CompositeGraphicsNode
parent
The parent of this graphics node.protected int
pointerEventType
Indicates how this graphics node reacts to events.protected RootGraphicsNode
root
The root of the GVT tree.protected java.awt.geom.AffineTransform
transform
The transform of this graphics node.protected java.lang.ref.WeakReference
weakRef
A 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 protected
AbstractGraphicsNode()
Constructs a new graphics node.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
contains(java.awt.geom.Point2D p)
Returns true if the specified Point2D is inside the boundary of this node, false otherwise.void
fireGraphicsNodeChangeCompleted()
void
fireGraphicsNodeChangeStarted()
void
fireGraphicsNodeChangeStarted(GraphicsNodeChangeEvent changeStartedEvent)
void
fireGraphicsNodeChangeStarted(GraphicsNode changeSrc)
java.awt.geom.Rectangle2D
getBounds()
Returns the bounds of this node in user space.ClipRable
getClip()
Returns the clipping filter of this node or null if any.java.awt.Composite
getComposite()
Returns the composite of this node or null if any.Filter
getEnableBackgroundGraphicsNodeRable(boolean createIfNeeded)
Returns the GraphicsNodeRable for this node.Filter
getFilter()
Returns the filter of this node or null if any.java.awt.geom.AffineTransform
getGlobalTransform()
Returns the concatenated transform of this node.Filter
getGraphicsNodeRable(boolean createIfNeeded)
Returns the GraphicsNodeRable for this node.java.awt.geom.AffineTransform
getInverseTransform()
Returns the inverse transform for this node.Mask
getMask()
Returns the mask of this node or null if any.CompositeGraphicsNode
getParent()
Returns the parent of this node or null if any.int
getPointerEventType()
Returns the type that describes how this graphics node reacts to events.java.awt.RenderingHints
getRenderingHints()
Returns the rendering hints of this node or null if any.RootGraphicsNode
getRoot()
Returns the root of the GVT tree or null if the node is not part of a GVT tree.java.awt.geom.AffineTransform
getTransform()
Returns the transform of this node or null if any.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).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.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).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.java.lang.ref.WeakReference
getWeakReference()
Returns a canonical WeakReference to this GraphicsNode.boolean
intersects(java.awt.geom.Rectangle2D r)
Returns true if the interior of this node intersects the interior of a specified Rectangle2D, false otherwise.protected void
invalidateGeometryCache()
Invalidates the cached geometric bounds.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 antialiasedprotected boolean
isOffscreenBufferNeeded()
Returns true of an offscreen buffer is needed to render this node, false otherwise.boolean
isVisible()
Returns true if this node is visible, false otherwise.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.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.void
paint(java.awt.Graphics2D g2d)
Paints this node.void
setClip(ClipRable newClipper)
Sets the clipping filter of this node.void
setComposite(java.awt.Composite newComposite)
Sets the composite of this node.void
setFilter(Filter newFilter)
Sets the filter of this node.void
setMask(Mask newMask)
Sets the mask of this node.protected void
setParent(CompositeGraphicsNode newParent)
Sets the parent node of this graphics node.void
setPointerEventType(int pointerEventType)
Sets the type that describes how this graphics node reacts to events.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.void
setRenderingHints(java.awt.RenderingHints newHints)
Sets the rendering hints of this node.void
setRenderingHints(java.util.Map hints)
Copies all of the mappings from the specified Map to the rendering hints of this node.protected void
setRoot(RootGraphicsNode newRoot)
Sets the root node of this graphics node.void
setTransform(java.awt.geom.AffineTransform newTransform)
Sets the transform of this node.void
setVisible(boolean isVisible)
Sets if this node is visible or not depending on the specified value.private void
traceFilter(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:
getWeakReference
in interfaceGraphicsNode
-
getPointerEventType
public int getPointerEventType()
Returns the type that describes how this graphics node reacts to events.- Specified by:
getPointerEventType
in 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:
setPointerEventType
in 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:
setTransform
in 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:
getTransform
in interfaceGraphicsNode
-
getInverseTransform
public java.awt.geom.AffineTransform getInverseTransform()
Returns the inverse transform for this node.- Specified by:
getInverseTransform
in 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:
getGlobalTransform
in interfaceGraphicsNode
-
setComposite
public void setComposite(java.awt.Composite newComposite)
Sets the composite of this node.- Specified by:
setComposite
in 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:
getComposite
in interfaceGraphicsNode
-
setVisible
public void setVisible(boolean isVisible)
Sets if this node is visible or not depending on the specified value.- Specified by:
setVisible
in interfaceGraphicsNode
- Parameters:
isVisible
- If true this node is visible
-
isVisible
public boolean isVisible()
Returns true if this node is visible, false otherwise.- Specified by:
isVisible
in interfaceGraphicsNode
-
setClip
public void setClip(ClipRable newClipper)
Description copied from interface:GraphicsNode
Sets the clipping filter of this node.- Specified by:
setClip
in 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:
getClip
in 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:
setRenderingHint
in 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:
setRenderingHints
in 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:
setRenderingHints
in 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:
getRenderingHints
in interfaceGraphicsNode
-
setMask
public void setMask(Mask newMask)
Sets the mask of this node.- Specified by:
setMask
in 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:
getMask
in interfaceGraphicsNode
-
setFilter
public void setFilter(Filter newFilter)
Sets the filter of this node.- Specified by:
setFilter
in 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:
getFilter
in 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:
getGraphicsNodeRable
in 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:
getEnableBackgroundGraphicsNodeRable
in interfaceGraphicsNode
-
paint
public void paint(java.awt.Graphics2D g2d)
Paints this node.- Specified by:
paint
in 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:
getParent
in 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:
getRoot
in 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:
getBounds
in 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:
getTransformedBounds
in 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:
getTransformedPrimitiveBounds
in 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:
getTransformedGeometryBounds
in 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:
getTransformedSensitiveBounds
in 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:
contains
in 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:
intersects
in 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:
nodeHitAt
in 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.
-
-