edu.umd.cs.piccolox.nodes
Class PNodeCache

java.lang.Object
  extended by edu.umd.cs.piccolo.PNode
      extended by edu.umd.cs.piccolox.nodes.PNodeCache
All Implemented Interfaces:
java.awt.print.Printable, java.io.Serializable, java.lang.Cloneable

public class PNodeCache
extends PNode

PNodeCache caches a visual representation of it's children into an image and uses this cached image for painting instead of painting it's children directly. This is intended to be used in two ways.

First it can be used as a simple optimization technique. If a node has many descendents it may be faster to paint the cached image representation instead of painting each node.

Second PNodeCache provides a place where "image" effects such as blurring and drop shadows can be added to the Piccolo scene graph. This can be done by overriding the method createImageCache and returing an image with the desired effect applied.

Version:
1.0
Author:
Jesse Grosjean
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class edu.umd.cs.piccolo.PNode
PNode.PSceneGraphDelegate
 
Field Summary
 
Fields inherited from class edu.umd.cs.piccolo.PNode
PROPERTY_BOUNDS, PROPERTY_CHILDREN, PROPERTY_CHILDREN_PICKABLE, PROPERTY_CLIENT_PROPERTIES, PROPERTY_CODE_BOUNDS, PROPERTY_CODE_CHILDREN, PROPERTY_CODE_CHILDREN_PICKABLE, PROPERTY_CODE_CLIENT_PROPERTIES, PROPERTY_CODE_FULL_BOUNDS, PROPERTY_CODE_PAINT, PROPERTY_CODE_PARENT, PROPERTY_CODE_PICKABLE, PROPERTY_CODE_TRANSFORM, PROPERTY_CODE_TRANSPARENCY, PROPERTY_CODE_VISIBLE, PROPERTY_FULL_BOUNDS, PROPERTY_PAINT, PROPERTY_PARENT, PROPERTY_PICKABLE, PROPERTY_TRANSFORM, PROPERTY_TRANSPARENCY, PROPERTY_VISIBLE, SCENE_GRAPH_DELEGATE
 
Fields inherited from interface java.awt.print.Printable
NO_SUCH_PAGE, PAGE_EXISTS
 
Constructor Summary
PNodeCache()
           
 
Method Summary
 java.awt.Image createImageCache(java.awt.geom.Dimension2D cacheOffsetRef)
          Override this method to customize the image cache creation process.
 void fullPaint(PPaintContext paintContext)
          Paint this node and all of its descendents.
 java.awt.Image getImageCache()
           
 void invalidateCache()
           
 void invalidatePaint()
          Invalidate this node's paint, and mark all of its ancestors as having a node with invalid paint.
protected  boolean pickAfterChildren(PPickPath pickPath)
          Try to pick this node after its children have had a chance to be picked.
 void repaintFrom(PBounds localBounds, PNode childOrThis)
          Pass the given repaint request up the tree, so that any cameras can invalidate that region on their associated canvas.
 
Methods inherited from class edu.umd.cs.piccolo.PNode
addActivity, addAttribute, addChild, addChild, addChildren, addClientProperty, addInputEventListener, addPropertyChangeListener, addPropertyChangeListener, animateToBounds, animateToColor, animateToPositionScaleRotation, animateToTransform, animateToTransparency, animateTransformToBounds, centerBoundsOnPoint, centerFullBoundsOnPoint, clone, computeFullBounds, endResizeBounds, findIntersectingNodes, fireChildPropertyChange, firePropertyChange, fullIntersects, fullPick, getAllNodes, getAllNodes, getAttribute, getAttribute, getBooleanAttribute, getBounds, getBoundsChanged, getBoundsReference, getBoundsVolatile, getChild, getChildBoundsInvalid, getChildBoundsVolatile, getChildPaintInvalid, getChildrenCount, getChildrenIterator, getChildrenPickable, getChildrenReference, getClientProperties, getClientProperty, getClientPropertyKeysEnumeration, getClientPropertyKeysIterator, getDoubleAttribute, getFullBounds, getFullBoundsInvalid, getFullBoundsReference, getGlobalBounds, getGlobalFullBounds, getGlobalRotation, getGlobalScale, getGlobalToLocalTransform, getGlobalTranslation, getHeight, getIntegerAttribute, getInverseTransform, getListenerList, getLocalToGlobalTransform, getOccluded, getOffset, getPaint, getPaintInvalid, getParent, getPickable, getPropertyChangeParentMask, getRoot, getRotation, getScale, getTransform, getTransformReference, getTransparency, getUnionOfChildrenBounds, getVisible, getWidth, getX, getXOffset, getY, getYOffset, globalToLocal, globalToLocal, globalToLocal, indexOfChild, internalUpdateBounds, intersects, invalidateFullBounds, invalidateLayout, isAncestorOf, isDescendentOf, isDescendentOfRoot, isOpaque, layoutChildren, lerp, localToGlobal, localToGlobal, localToGlobal, localToParent, localToParent, localToParent, moveInBackOf, moveInFrontOf, moveToBack, moveToFront, offset, paint, paintAfterChildren, paramString, parentBoundsChanged, parentToLocal, parentToLocal, parentToLocal, pick, position, print, print, removeAllChildren, removeChild, removeChild, removeChildren, removeFromParent, removeInputEventListener, removePropertyChangeListener, removePropertyChangeListener, repaint, reparent, replaceWith, resetBounds, rotate, rotateAboutPoint, rotateAboutPoint, rotateInPlace, scale, scaleAboutPoint, scaleAboutPoint, setBounds, setBounds, setBoundsChanged, setChildBoundsInvalid, setChildBoundsVolatile, setChildPaintInvalid, setChildrenPickable, setFullBoundsInvalid, setGlobalRotation, setGlobalScale, setGlobalTranslation, setHeight, setOccluded, setOffset, setOffset, setPaint, setPaintInvalid, setParent, setPickable, setPropertyChangeParentMask, setRotation, setScale, setTransform, setTransparency, setVisible, setWidth, setX, setY, signalBoundsChanged, startResizeBounds, toImage, toImage, toImage, toString, transformBy, translate, validateFullBounds, validateFullPaint
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PNodeCache

public PNodeCache()
Method Detail

createImageCache

public java.awt.Image createImageCache(java.awt.geom.Dimension2D cacheOffsetRef)
Override this method to customize the image cache creation process. For example if you want to create a shadow effect you would do that here. Fill in the cacheOffsetRef if needed to make your image cache line up with the nodes children.


getImageCache

public java.awt.Image getImageCache()

invalidateCache

public void invalidateCache()

invalidatePaint

public void invalidatePaint()
Description copied from class: PNode
Invalidate this node's paint, and mark all of its ancestors as having a node with invalid paint.

Overrides:
invalidatePaint in class PNode

repaintFrom

public void repaintFrom(PBounds localBounds,
                        PNode childOrThis)
Description copied from class: PNode
Pass the given repaint request up the tree, so that any cameras can invalidate that region on their associated canvas.

Overrides:
repaintFrom in class PNode
Parameters:
localBounds - the bounds to repaint
childOrThis - if childOrThis does not equal this then this nodes transform will be applied to the localBounds param

fullPaint

public void fullPaint(PPaintContext paintContext)
Description copied from class: PNode
Paint this node and all of its descendents. Most subclasses do not need to override this method, they should override paint or paintAfterChildren instead.

Overrides:
fullPaint in class PNode
Parameters:
paintContext - the paint context to use for painting this node and its children

pickAfterChildren

protected boolean pickAfterChildren(PPickPath pickPath)
Description copied from class: PNode
Try to pick this node after its children have had a chance to be picked. Most subclasses the define a different geometry will need to override this method.

Overrides:
pickAfterChildren in class PNode
Parameters:
pickPath - the pick path used for the pick operation
Returns:
true if this node was picked


Copyright © 2008 by University of Maryland, College Park, MD 20742, USA All rights reserved.