## org.apache.batik.gvt
Class CompositeGraphicsNode

    java.lang.Object
      org.apache.batik.gvt.AbstractGraphicsNode
          org.apache.batik.gvt.CompositeGraphicsNode

All Implemented Interfaces:
  java.lang.Iterable, java.util.Collection, java.util.List, GraphicsNode

Direct Known Subclasses:
  CanvasGraphicsNode, ImageNode, RootGraphicsNode

    public class CompositeGraphicsNode

extends AbstractGraphicsNode
implements java.util.List

A CompositeGraphicsNode is a graphics node that can contain graphics nodes.
Note: this class is a 'little bit aware of' other threads, but not really threadsafe.

Field Summary
`protected java.awt.geom.Rectangle2D` `backgroundEnableRgn` This flag indicates if this node has BackgroundEnable = 'new'.
`protected GraphicsNode[]` `children` The children of this composite graphics node.
`protected int` `count` The number of children of this composite graphics node.
`protected int` `modCount` The number of times the children list has been structurally modified.
`static java.awt.geom.Rectangle2D` `NULL_RECT`
`static java.awt.geom.Rectangle2D` `VIEWPORT`

Fields inherited from class org.apache.batik.gvt.AbstractGraphicsNode
`changeCompletedEvent, changeStartedEvent, clip, composite, enableBackgroundGraphicsNodeRable, filter, graphicsNodeRable, hints, inverseTransform, isVisible, listeners, mask, parent, pointerEventType, root, transform, weakRef`

Fields inherited from interface org.apache.batik.gvt.GraphicsNode
`ALL, FILL, IDENTITY, NONE, PAINTED, STROKE, VISIBLE, VISIBLE_FILL, VISIBLE_PAINTED, VISIBLE_STROKE`

Constructor Summary
`CompositeGraphicsNode()` Constructs a new empty `CompositeGraphicsNode`.

Method Summary
`void` `add(int index, java.lang.Object o)` Inserts the specified graphics node at the specified position in this children list.
`boolean` `add(java.lang.Object o)` Adds the specified graphics node to this composite graphics node.
`boolean` `addAll(java.util.Collection c)` Not supported - Throws `UnsupportedOperationException` exception.
`boolean` `addAll(int index, java.util.Collection c)` Not supported - Throws `UnsupportedOperationException` exception.
`void` `clear()` Not supported - Throws `UnsupportedOperationException` exception.
`boolean` `contains(java.lang.Object node)` Returns true if this composite graphics node contains the specified graphics node, false otherwise.
`boolean` `contains(java.awt.geom.Point2D p)` Returns true if the specified Point2D is inside the boundary of this node, false otherwise.
`boolean` `containsAll(java.util.Collection c)` Returns true if this composite graphics node contains all the graphics node in the specified collection, false otherwise.
`void` `ensureCapacity(int minCapacity)` Increases the capacity of the children list, if necessary, to ensure that it can hold at least the number of graphics nodes specified by the minimum capacity argument.
`java.lang.Object` `get(int index)` Returns the graphics node at the specified position in the children list.
`java.awt.geom.Rectangle2D` `getBackgroundEnable()` Returns the region defining the background enable property.
`java.util.List` `getChildren()` Returns the list of children.
`java.awt.geom.Rectangle2D` `getGeometryBounds()` Returns the bounds of the area covered by this node, without taking any of its rendering attributes into account.
`java.awt.Shape` `getOutline()` Returns the outline of this node.
`java.awt.geom.Rectangle2D` `getPrimitiveBounds()` Returns the bounds of the area covered by this node's primitive paint.
`java.awt.geom.Rectangle2D` `getSensitiveBounds()` 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.
`static java.awt.geom.Rectangle2D` `getTransformedBBox(java.awt.geom.Rectangle2D r2d, java.awt.geom.AffineTransform t)` Transforms a Rectangle 2D by an affine transform.
`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.
`int` `indexOf(java.lang.Object node)` Returns the index in the children list of the specified graphics node or -1 if the children list does not contain this graphics node.
`protected void` `invalidateGeometryCache()` Invalidates the cached geometric bounds.
`boolean` `isEmpty()` Returns true if this composite graphics node does not contain graphics node, false otherwise.
`java.util.Iterator` `iterator()` Returns an iterator over the children of this graphics node.
`int` `lastIndexOf(java.lang.Object node)` Returns the index in this children list of the last occurence of the specified graphics node, or -1 if the list does not contain this graphics node.
`java.util.ListIterator` `listIterator()` Returns an iterator over the children of this graphics node.
`java.util.ListIterator` `listIterator(int index)` Returns an iterator over the children of this graphics node, starting at the specified position in the children list.
`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.
`void` `primitivePaint(java.awt.Graphics2D g2d)` Paints this node without applying Filter, Mask, Composite, and clip.
`java.lang.Object` `remove(int index)` Removes the graphics node at the specified position in the children list.
`boolean` `remove(java.lang.Object o)` Removes the first instance of the specified graphics node from the children list.
`boolean` `removeAll(java.util.Collection c)` Not supported - Throws `UnsupportedOperationException` exception.
`boolean` `retainAll(java.util.Collection c)` Not supported - Throws `UnsupportedOperationException` exception.
`java.lang.Object` `set(int index, java.lang.Object o)` Replaces the graphics node at the specified position in the children list with the specified graphics node.
`void` `setBackgroundEnable(java.awt.geom.Rectangle2D bgRgn)` Sets the enable background property to the specified rectangle.
`protected void` `setRoot(RootGraphicsNode newRoot)` Sets the root node of this grahics node and modify all its children.
`void` `setVisible(boolean isVisible)` Sets if this node is visible or not depending on the specified value.
`int` `size()` Returns the number of children of this composite graphics node.
`java.util.List` `subList(int fromIndex, int toIndex)` Not supported - Throws `UnsupportedOperationException` exception.
`java.lang.Object[]` `toArray()` Returns an array containing all of the graphics node in the children list of this composite graphics node in the correct order.
`java.lang.Object[]` `toArray(java.lang.Object[] a)` Returns an array containing all of the graphics node in the children list of this composite graphics node in the correct order.

Methods inherited from class org.apache.batik.gvt.AbstractGraphicsNode

`fireGraphicsNodeChangeCompleted, fireGraphicsNodeChangeStarted, fireGraphicsNodeChangeStarted, fireGraphicsNodeChangeStarted, getBounds, getClip, getComposite, getEnableBackgroundGraphicsNodeRable, getFilter, getGlobalTransform, getGraphicsNodeRable, getInverseTransform, getMask, getParent, getPointerEventType, getRenderingHints, getRoot, getTransform, getTransformedBounds, getWeakReference, intersects, isAntialiasedClip, isOffscreenBufferNeeded, isVisible, normalizeRectangle, paint, setClip, setComposite, setFilter, setMask, setParent, setPointerEventType, setRenderingHint, setRenderingHints, setRenderingHints, setTransform`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface java.util.List
`equals, hashCode`

Field Detail

### VIEWPORT

    public static final java.awt.geom.Rectangle2D VIEWPORT

### NULL_RECT

    public static final java.awt.geom.Rectangle2D NULL_RECT

### children

    protected GraphicsNode[] children

  The children of this composite graphics node.

### count

    protected volatile int count

  The number of children of this composite graphics node.

### modCount

    protected volatile int modCount

  The number of times the children list has been structurally modified.

### backgroundEnableRgn

    protected java.awt.geom.Rectangle2D backgroundEnableRgn

  This flag indicates if this node has BackgroundEnable = 'new'. If so traversal of the gvt tree can halt here.

Constructor Detail

### CompositeGraphicsNode

    public CompositeGraphicsNode()

  Constructs a new empty `CompositeGraphicsNode`.

Method Detail

### getChildren

    public java.util.List getChildren()

  Returns the list of children.

### setBackgroundEnable

    public void setBackgroundEnable(java.awt.geom.Rectangle2D bgRgn)

  Sets the enable background property to the specified rectangle.

  Parameters:
    `bgRgn` - the region that defines the background enable property

### getBackgroundEnable

    public java.awt.geom.Rectangle2D getBackgroundEnable()

  Returns the region defining the background enable property.

### setVisible

    public void setVisible(boolean isVisible)

  Sets if this node is visible or not depending on the specified value. Don't fire a graphicsNodeChange event because this doesn't really effect us (it effects our children through CSS inheritence).

  Specified by:
    `setVisible` in interface `GraphicsNode`
  Overrides:
    `setVisible` in class `AbstractGraphicsNode`
  Parameters:
    `isVisible` - If true this node is visible

### primitivePaint

    public void primitivePaint(java.awt.Graphics2D g2d)

  Paints this node without applying Filter, Mask, Composite, and clip.

  Specified by:
    `primitivePaint` in interface `GraphicsNode`
  Parameters:
    `g2d` - the Graphics2D to use

### 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.

  Overrides:
    `invalidateGeometryCache` in class `AbstractGraphicsNode`

### getPrimitiveBounds

    public java.awt.geom.Rectangle2D getPrimitiveBounds()

  Returns the bounds of the area covered by this node's primitive paint.

  Specified by:
    `getPrimitiveBounds` in interface `GraphicsNode`

### getTransformedBBox

    public static java.awt.geom.Rectangle2D getTransformedBBox(java.awt.geom.Rectangle2D r2d,
                                                               java.awt.geom.AffineTransform t)

  Transforms a Rectangle 2D by an affine transform. It assumes the transform is only scale/translate so there is no loss of precision over transforming the source geometry.

### 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 interface `GraphicsNode`
  Overrides:
    `getTransformedPrimitiveBounds` in class `AbstractGraphicsNode`
  Parameters:
    `txf` - the affine transform with which this node's transform should be concatenated. Should not be null.

### getGeometryBounds

    public java.awt.geom.Rectangle2D getGeometryBounds()

  Returns the bounds of the area covered by this node, without taking any of its rendering attributes into account. That is, exclusive of any clipping, masking, filtering or stroking, for example.

  Specified by:
    `getGeometryBounds` in interface `GraphicsNode`

### 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 interface `GraphicsNode`
  Overrides:
    `getTransformedGeometryBounds` in class `AbstractGraphicsNode`
  Parameters:
    `txf` - the affine transform with which this node's transform should be concatenated. Should not be null.

### getSensitiveBounds

    public java.awt.geom.Rectangle2D getSensitiveBounds()

  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.

  Specified by:
    `getSensitiveBounds` in interface `GraphicsNode`

### 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 interface `GraphicsNode`
  Overrides:
    `getTransformedSensitiveBounds` in class `AbstractGraphicsNode`
  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 interface `GraphicsNode`
  Overrides:
    `contains` in class `AbstractGraphicsNode`
  Parameters:
    `p` - the specified Point2D in the user 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 interface `GraphicsNode`
  Overrides:
    `nodeHitAt` in class `AbstractGraphicsNode`
  Parameters:
    `p` - the specified Point2D in the user space

### getOutline

    public java.awt.Shape getOutline()

  Returns the outline of this node.

  Specified by:
    `getOutline` in interface `GraphicsNode`

### setRoot

    protected void setRoot(RootGraphicsNode newRoot)

  Sets the root node of this grahics node and modify all its children.

  Overrides:
    `setRoot` in class `AbstractGraphicsNode`
  Parameters:
    `newRoot` - the new root node of this node

### size

    public int size()

  Returns the number of children of this composite graphics node.

  Specified by:
    `size` in interface `java.util.Collection`
  Specified by:
    `size` in interface `java.util.List`

### isEmpty

    public boolean isEmpty()

  Returns true if this composite graphics node does not contain graphics node, false otherwise.

  Specified by:
    `isEmpty` in interface `java.util.Collection`
  Specified by:
    `isEmpty` in interface `java.util.List`

### contains

    public boolean contains(java.lang.Object node)

  Returns true if this composite graphics node contains the specified graphics node, false otherwise.

  Specified by:
    `contains` in interface `java.util.Collection`
  Specified by:
    `contains` in interface `java.util.List`
  Parameters:
    `node` - the node to check

### iterator

    public java.util.Iterator iterator()

  Returns an iterator over the children of this graphics node.

  Specified by:
    `iterator` in interface `java.lang.Iterable`
  Specified by:
    `iterator` in interface `java.util.Collection`
  Specified by:
    `iterator` in interface `java.util.List`

### toArray

    public java.lang.Object[] toArray()

  Returns an array containing all of the graphics node in the children list of this composite graphics node in the correct order.

  Specified by:
    `toArray` in interface `java.util.Collection`
  Specified by:
    `toArray` in interface `java.util.List`

### toArray

    public java.lang.Object[] toArray(java.lang.Object[] a)

  Returns an array containing all of the graphics node in the children list of this composite graphics node in the correct order. If the children list fits in the specified array, it is returned therein. Otherwise, a new array is allocated.

  Specified by:
    `toArray` in interface `java.util.Collection`
  Specified by:
    `toArray` in interface `java.util.List`
  Parameters:
    `a` - the array to fit if possible

### get

    public java.lang.Object get(int index)

  Returns the graphics node at the specified position in the children list.

  Specified by:
    `get` in interface `java.util.List`
  Parameters:
    `index` - the index of the graphics node to return
  Throws:
    `java.lang.IndexOutOfBoundsException` - if the index is out of range

### set

    public java.lang.Object set(int index,
                                java.lang.Object o)

  Replaces the graphics node at the specified position in the children list with the specified graphics node.

  Specified by:
    `set` in interface `java.util.List`
  Parameters:
    `index` - the index of the graphics node to replace
    `o` - the graphics node to be stored at the specified position
  Returns:
    the graphics node previously at the specified position
  Throws:
    `java.lang.IndexOutOfBoundsException` - if the index is out of range
    `java.lang.IllegalArgumentException` - if the node is not an instance of GraphicsNode

### add

    public boolean add(java.lang.Object o)

  Adds the specified graphics node to this composite graphics node.

  Specified by:
    `add` in interface `java.util.Collection`
  Specified by:
    `add` in interface `java.util.List`
  Parameters:
    `o` - the graphics node to add
  Returns:
    true (as per the general contract of Collection.add)
  Throws:
    `java.lang.IllegalArgumentException` - if the node is not an instance of GraphicsNode

### add

    public void add(int index,
                    java.lang.Object o)

  Inserts the specified graphics node at the specified position in this children list. Shifts the graphics node currently at that position (if any) and any subsequent graphics nodes to the right (adds one to their indices).

  Specified by:
    `add` in interface `java.util.List`
  Parameters:
    `index` - the position at which the specified graphics node is to be inserted.
    `o` - the graphics node to be inserted.
  Throws:
    `java.lang.IndexOutOfBoundsException` - if the index is out of range
    `java.lang.IllegalArgumentException` - if the node is not an instance of GraphicsNode

### addAll

    public boolean addAll(java.util.Collection c)

  Not supported - Throws `UnsupportedOperationException` exception.

  Specified by:
    `addAll` in interface `java.util.Collection`
  Specified by:
    `addAll` in interface `java.util.List`

### addAll

    public boolean addAll(int index,
                          java.util.Collection c)

  Not supported - Throws `UnsupportedOperationException` exception.

  Specified by:
    `addAll` in interface `java.util.List`

### remove

    public boolean remove(java.lang.Object o)

  Removes the first instance of the specified graphics node from the children list.

  Specified by:
    `remove` in interface `java.util.Collection`
  Specified by:
    `remove` in interface `java.util.List`
  Parameters:
    `o` - the node the remove
  Returns:
    true if the children list contains the specified graphics node
  Throws:
    `java.lang.IllegalArgumentException` - if the node is not an instance of GraphicsNode
    `java.lang.IndexOutOfBoundsException` - when o is not in children list

### remove

    public java.lang.Object remove(int index)

  Removes the graphics node at the specified position in the children list. Shifts any subsequent graphics nodes to the left (subtracts one from their indices).

  Specified by:
    `remove` in interface `java.util.List`
  Parameters:
    `index` - the position of the graphics node to remove
  Returns:
    the graphics node that was removed
  Throws:
    `java.lang.IndexOutOfBoundsException` - if index out of range ``

### removeAll

    public boolean removeAll(java.util.Collection c)

  Not supported - Throws `UnsupportedOperationException` exception.

  Specified by:
    `removeAll` in interface `java.util.Collection`
  Specified by:
    `removeAll` in interface `java.util.List`

### retainAll

    public boolean retainAll(java.util.Collection c)

  Not supported - Throws `UnsupportedOperationException` exception.

  Specified by:
    `retainAll` in interface `java.util.Collection`
  Specified by:
    `retainAll` in interface `java.util.List`

### clear

    public void clear()

  Not supported - Throws `UnsupportedOperationException` exception.

  Specified by:
    `clear` in interface `java.util.Collection`
  Specified by:
    `clear` in interface `java.util.List`

### containsAll

    public boolean containsAll(java.util.Collection c)

  Returns true if this composite graphics node contains all the graphics node in the specified collection, false otherwise.

  Specified by:
    `containsAll` in interface `java.util.Collection`
  Specified by:
    `containsAll` in interface `java.util.List`
  Parameters:
    `c` - the collection to be checked for containment

### indexOf

    public int indexOf(java.lang.Object node)

  Returns the index in the children list of the specified graphics node or -1 if the children list does not contain this graphics node.

  Specified by:
    `indexOf` in interface `java.util.List`
  Parameters:
    `node` - the graphics node to search for

### lastIndexOf

    public int lastIndexOf(java.lang.Object node)

  Returns the index in this children list of the last occurence of the specified graphics node, or -1 if the list does not contain this graphics node.

  Specified by:
    `lastIndexOf` in interface `java.util.List`
  Parameters:
    `node` - the graphics node to search for

### listIterator

    public java.util.ListIterator listIterator()

  Returns an iterator over the children of this graphics node.

  Specified by:
    `listIterator` in interface `java.util.List`

### listIterator

    public java.util.ListIterator listIterator(int index)

  Returns an iterator over the children of this graphics node, starting at the specified position in the children list.

  Specified by:
    `listIterator` in interface `java.util.List`
  Parameters:
    `index` - the index of the first graphics node to return from the children list

### subList

    public java.util.List subList(int fromIndex,
                                  int toIndex)

  Not supported - Throws `UnsupportedOperationException` exception.

  Specified by:
    `subList` in interface `java.util.List`

### ensureCapacity

    public void ensureCapacity(int minCapacity)

  Increases the capacity of the children list, if necessary, to ensure that it can hold at least the number of graphics nodes specified by the minimum capacity argument.

  Parameters:
    `minCapacity` - the desired minimum capacity.

Copyright © 2008 Apache Software Foundation. All Rights Reserved.