diva.canvas.toolbox
Class VectorFigure

java.lang.Object
  extended by diva.canvas.AbstractFigure
      extended by diva.canvas.toolbox.VectorFigure
All Implemented Interfaces:
CanvasComponent, Figure, VisibleComponent, UserObjectContainer

public class VectorFigure
extends AbstractFigure

A VectorFigure is a figure containing a list of objects that are drawn to produce the figure. The list of objects that are drawn includes both geometric objects and drawing control objects. Specifically:

Strings are not currently supported, but will be soon. Transforms are not supported, but may be at some time in the future. The figure is switched between line drawing mode and filling mode with the calls lineMode() and fillMode(). The default mode is line drawing with a 1-pixel black stroke.

Version:
$Id: VectorFigure.java 47561 2007-12-16 07:29:50Z cxh $
Author:
John Reekie

Nested Class Summary
private static class VectorFigure.CtrlObj
           
 
Field Summary
private  java.awt.geom.Rectangle2D _bounds
          The bounds of the figure, without transforming.
private  java.awt.geom.Rectangle2D _cachedBounds
          The bounds of the figure, transformed.
private  java.awt.Shape _cachedShape
          The shape of the figure, transformed.
private  java.util.ArrayList _objects
          The list containing the objects that we paint
private  java.awt.Shape _shape
          The shape of the figure, without transforming.
private  TransformContext _transformContext
          The transform for the internals
(package private) static int FILLMODE
           
(package private) static int LINEMODE
           
 
Constructor Summary
VectorFigure()
          Create a new blank figure.
 
Method Summary
 void add(java.awt.Composite c)
          Add a new compositioning operator to the list of drawn objects.
 void add(Figure f)
          Add a new figure to the list of drawn objects
 void add(java.awt.Paint p)
          Add a new paint to the list of drawn objects.
 void add(java.awt.Shape s)
          Add a new painted shape to the list of drawn objects.
 void add(java.awt.Stroke s)
          Add a new stroke to the list of drawn objects.
 void fillMode()
          Add an object to the list that puts drawing into fill mode
 java.awt.geom.Rectangle2D getBounds()
          Get the bounding box of this figure.
 java.awt.Shape getShape()
          Get the shape of this figure.
 void lineMode()
          Add an object to the list that puts drawing into line mode
 void paint(java.awt.Graphics2D g)
          Paint the figure.
 void setShape(java.awt.Shape s)
          Set the shape of this Figure.
 void transform(java.awt.geom.AffineTransform at)
          Transform the figure with the supplied transform.
 
Methods inherited from class diva.canvas.AbstractFigure
contains, getInteractor, getLayer, getOrigin, getParent, getToolTipText, getTransformContext, getUserObject, hit, intersects, isVisible, paint, repaint, repaint, setInteractor, setParent, setToolTipText, setUserObject, setVisible, translate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FILLMODE

static final int FILLMODE
See Also:
Constant Field Values

LINEMODE

static final int LINEMODE
See Also:
Constant Field Values

_objects

private java.util.ArrayList _objects
The list containing the objects that we paint


_transformContext

private TransformContext _transformContext
The transform for the internals


_shape

private java.awt.Shape _shape
The shape of the figure, without transforming.


_cachedShape

private java.awt.Shape _cachedShape
The shape of the figure, transformed.


_bounds

private java.awt.geom.Rectangle2D _bounds
The bounds of the figure, without transforming.


_cachedBounds

private java.awt.geom.Rectangle2D _cachedBounds
The bounds of the figure, transformed.

Constructor Detail

VectorFigure

public VectorFigure()
Create a new blank figure.

Method Detail

add

public void add(java.awt.Shape s)
Add a new painted shape to the list of drawn objects.


add

public void add(Figure f)
Add a new figure to the list of drawn objects


add

public void add(java.awt.Composite c)
Add a new compositioning operator to the list of drawn objects.


add

public void add(java.awt.Paint p)
Add a new paint to the list of drawn objects.


add

public void add(java.awt.Stroke s)
Add a new stroke to the list of drawn objects.


fillMode

public void fillMode()
Add an object to the list that puts drawing into fill mode


getBounds

public java.awt.geom.Rectangle2D getBounds()
Get the bounding box of this figure. If a bounding box has not yet been set (by calling the constructor that takes a Figure, or by calling _setBounds()), then a new bounding box will be computed by traversing the list of objects.

Specified by:
getBounds in interface Figure
Overrides:
getBounds in class AbstractFigure

getShape

public java.awt.Shape getShape()
Get the shape of this figure. If a shape has not yet been set by calling setShape(), then the shape will be set to the bounding box.

Specified by:
getShape in interface Figure
Specified by:
getShape in class AbstractFigure

lineMode

public void lineMode()
Add an object to the list that puts drawing into line mode


paint

public void paint(java.awt.Graphics2D g)
Paint the figure.

Specified by:
paint in interface VisibleComponent
Specified by:
paint in class AbstractFigure

setShape

public void setShape(java.awt.Shape s)
Set the shape of this Figure. This is useful when the default of the bounding box is not the right thing -- such as when a circular shape is required, for instance.


transform

public void transform(java.awt.geom.AffineTransform at)
Transform the figure with the supplied transform. This can be used to perform arbitrary translation, scaling, shearing, and rotation operations.

Specified by:
transform in interface Figure
Specified by:
transform in class AbstractFigure