org.jdrawing
Class QuadTreeDrawingModelCache

java.lang.Object
  extended byorg.jdrawing.AbstractDrawingModelCache
      extended byorg.jdrawing.QuadTreeDrawingModelCache
All Implemented Interfaces:
DrawingModelCache

public class QuadTreeDrawingModelCache
extends AbstractDrawingModelCache

This implementation of DrawingModelCache optimizes drawing operations by splitting all the drawing area into quadrants recursively and caching elements contained in each quadrant.


Field Summary
static int MIN_CELL_SIZE
          Minimal cell size in pixels.
 
Constructor Summary
QuadTreeDrawingModelCache()
           
 
Method Summary
protected  void elementsAdded(DrawingModelEvent event)
          Invoked after elements have been inserted into the model.
protected  void elementsChanged(DrawingModelEvent event)
          Invoked after elements have been changed in some way.
protected  void elementsRemoved(DrawingModelEvent event)
          Invoked after elements have been removed from the model.
 java.lang.Object[] getElementsForPoint(java.awt.geom.Point2D point)
          Returns elements which contain a given point. Elements are returned in order, suitable for painting.
 java.lang.Object[] getElementsForRectangle(java.awt.geom.Rectangle2D rectangle)
          Returns elements neccessary for repainting given area. Elements are returned in order suitable for painting.
 java.awt.geom.Rectangle2D getModelBounds2D()
          Returns the high precision bounding box of all elements of the model.
protected  void modelChanged(DrawingModelEvent event)
          Invoked after the model has drastically changed in some way.
 void setModel(DrawingModel model)
          Sets the DrawingModel that will be cached by this cache.
 void setRenderer(DrawingRenderer renderer)
          Sets the DrawingRenderer that will be used in this cache.
 
Methods inherited from class org.jdrawing.AbstractDrawingModelCache
addDrawingModelCacheListener, fireAreaChanged, fireDrawingChanged, getDrawingModelCacheListeners, getModel, getModelBounds, getRenderer, removeDrawingModelCacheListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MIN_CELL_SIZE

public static final int MIN_CELL_SIZE
Minimal cell size in pixels. Current value is 16 and can not be changed.

See Also:
Constant Field Values
Constructor Detail

QuadTreeDrawingModelCache

public QuadTreeDrawingModelCache()
Method Detail

getModelBounds2D

public java.awt.geom.Rectangle2D getModelBounds2D()
Description copied from interface: DrawingModelCache
Returns the high precision bounding box of all elements of the model.

Returns:
the high precision bounding box of all elements of the model

getElementsForRectangle

public java.lang.Object[] getElementsForRectangle(java.awt.geom.Rectangle2D rectangle)
Returns elements neccessary for repainting given area. Elements are returned in order suitable for painting.

Parameters:
rectangle - area that will be repainted
Returns:
elements neccessary for repainting
Throws:
java.lang.IllegalArgumentException - if rectangle is null

getElementsForPoint

public java.lang.Object[] getElementsForPoint(java.awt.geom.Point2D point)
Returns elements which contain a given point. Elements are returned in order, suitable for painting.

Parameters:
point - the Point2D return elements containing given point
Throws:
java.lang.IllegalArgumentException - if point is null

setModel

public void setModel(DrawingModel model)
Description copied from interface: DrawingModelCache
Sets the DrawingModel that will be cached by this cache. If model is null, then set this DrawingModelCache to do not cache any DrawingModel.

Specified by:
setModel in interface DrawingModelCache
Overrides:
setModel in class AbstractDrawingModelCache

setRenderer

public void setRenderer(DrawingRenderer renderer)
Description copied from interface: DrawingModelCache
Sets the DrawingRenderer that will be used in this cache. If renderer is null, then set this DrawingModelCache to do not use any DrawingRenderer. Renderer is used to obtain the bounds of an element of the model.

Specified by:
setRenderer in interface DrawingModelCache
Overrides:
setRenderer in class AbstractDrawingModelCache

elementsAdded

protected void elementsAdded(DrawingModelEvent event)
Description copied from class: AbstractDrawingModelCache
Invoked after elements have been inserted into the model. Notifies all listeners that the area occupied by the inserted element have been changed. Do not call this method directly.

Overrides:
elementsAdded in class AbstractDrawingModelCache
Parameters:
event - DrawingModelEvent object encapsulating event information

elementsRemoved

protected void elementsRemoved(DrawingModelEvent event)
Description copied from class: AbstractDrawingModelCache
Invoked after elements have been removed from the model. Notifies all listeners that the area occupied by the removed element have been changed. Do not call this method directly.

Overrides:
elementsRemoved in class AbstractDrawingModelCache
Parameters:
event - DrawingModelEvent object encapsulating event information

elementsChanged

protected void elementsChanged(DrawingModelEvent event)
Description copied from class: AbstractDrawingModelCache
Invoked after elements have been changed in some way. Notifies all listeners that drawing has changed. Do not call this method directly.

Overrides:
elementsChanged in class AbstractDrawingModelCache
Parameters:
event - DrawingModelEvent object encapsulating event information

modelChanged

protected void modelChanged(DrawingModelEvent event)
Description copied from class: AbstractDrawingModelCache
Invoked after the model has drastically changed in some way. Notifies all listeners that drawing has changed. Do not call this method directly.

Overrides:
modelChanged in class AbstractDrawingModelCache
Parameters:
event - DrawingModelEvent object encapsulating event information