endrov.windowLineage
Class HierarchicalPainter

java.lang.Object
  extended by endrov.windowLineage.HierarchicalPainter

public class HierarchicalPainter
extends java.lang.Object

Hierarchical 2D rendering system. When drawing really large charts that do not fit within the screen, the most important optimization is culling of objects that are outside the screen. This class does it by storing objects in a tree such that a sub-object is within the bounding box of the parent. This logarithmically reduces the number of objects that has to be considered for rendering.


Nested Class Summary
static class HierarchicalPainter.BoundingBox
          Bounding box around something to draw
static class HierarchicalPainter.Camera
          Location of camera and current zoom
static class HierarchicalPainter.DrawNode
          One drawable node in the hierarchical tree
static class HierarchicalPainter.DrawNodeContainer
          Node that doesn't draw anything
 
Field Summary
 java.util.List<HierarchicalPainter.DrawNode> topNodes
           
 
Constructor Summary
HierarchicalPainter()
           
 
Method Summary
 HierarchicalPainter.BoundingBox getTotalBoundingBox()
          Get a bounding box around all objects, or null if there are no objects
 int paint_(java.awt.Graphics g, double width, double height, HierarchicalPainter.Camera cam, HierarchicalPainter.BoundingBox screenBB, HierarchicalPainter.DrawNode n)
           
 void paint(java.awt.Graphics g, double width, double height, HierarchicalPainter.Camera cam)
          Paint everything
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

topNodes

public java.util.List<HierarchicalPainter.DrawNode> topNodes
Constructor Detail

HierarchicalPainter

public HierarchicalPainter()
Method Detail

getTotalBoundingBox

public HierarchicalPainter.BoundingBox getTotalBoundingBox()
Get a bounding box around all objects, or null if there are no objects


paint

public void paint(java.awt.Graphics g,
                  double width,
                  double height,
                  HierarchicalPainter.Camera cam)
Paint everything

Parameters:
width - Width of output g
height - Height of output g
cam - Camera

paint_

public int paint_(java.awt.Graphics g,
                  double width,
                  double height,
                  HierarchicalPainter.Camera cam,
                  HierarchicalPainter.BoundingBox screenBB,
                  HierarchicalPainter.DrawNode n)