diva.canvas
Class TransformContext

java.lang.Object
  extended by diva.canvas.TransformContext

public class TransformContext
extends java.lang.Object

A transform context defines a transformed coordinate system. Each transform context is associated with a component in the display tree. This class provides the support for most of the transform-related operations on the display tree.

Version:
$Id: TransformContext.java 38798 2005-07-08 20:00:01Z cxh $
Author:
John Reekie
Accepted Rating:
Yellow

Field Summary
private  boolean _cacheValid
          A flag saying whether the cached data is valid.
private  CanvasComponent _component
          The component associated with this context
private  java.awt.geom.AffineTransform _graphicsTransform
          The temporary graphics context transform
private  java.awt.geom.AffineTransform _inverseTransform
          The transform from the parent context to this context
private  java.awt.geom.AffineTransform _screenTransform
          The cached local-to-screen coordinate transform
private  java.awt.geom.AffineTransform _transform
          The main transform, which is from this context to the parent context
private  int _version
          The version number
 
Constructor Summary
TransformContext(CanvasComponent component)
          Create a transform context associated with the given display component.
 
Method Summary
 void checkCacheValid(TransformContext ancestor)
          Check transform cache validity.
 void concatenate(java.awt.geom.AffineTransform at)
          Concatenate this transform context with the given transform.
 CanvasComponent getComponent()
          Get the component that this context is associated with.
 java.awt.geom.AffineTransform getInverseTransform()
          Get the transform from parent coordinates into local coordinates.
 TransformContext getParent()
          Get the parent transform context of this one, or null if this context is at the root of the transform tree.
 java.awt.geom.AffineTransform getScreenTransform()
          Get the transform from local coordinates into screen coordinates.
 java.awt.geom.AffineTransform getTransform()
          Get the transform of this context.
 java.awt.geom.AffineTransform getTransform(TransformContext context)
          Get the transform of this context, relative to the given context.
 int getVersion()
          Get the version number of the transform context.
 void invalidateCache()
          Notify that cached data based on the transform is now invalid.
 boolean isCacheValid()
          Test if the cache is valid.
 void pop(java.awt.Graphics2D g)
          Pop this transform off the graphics stack.
 void preConcatenate(java.awt.geom.AffineTransform at)
          Pre-concatenate this transform context with the given transform.
 void push(java.awt.Graphics2D g)
          Push this transform onto the graphics stack.
 void setTransform(java.awt.geom.AffineTransform at)
          Set the transform that maps local coordinates into the parent's coordinates.
 void translate(double x, double y)
          Translate this context the given distance.
private  void validateCache()
          Recompute the cached transforms.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_cacheValid

private boolean _cacheValid
A flag saying whether the cached data is valid.


_version

private int _version
The version number


_component

private CanvasComponent _component
The component associated with this context


_graphicsTransform

private java.awt.geom.AffineTransform _graphicsTransform
The temporary graphics context transform


_transform

private java.awt.geom.AffineTransform _transform
The main transform, which is from this context to the parent context


_inverseTransform

private java.awt.geom.AffineTransform _inverseTransform
The transform from the parent context to this context


_screenTransform

private java.awt.geom.AffineTransform _screenTransform
The cached local-to-screen coordinate transform

Constructor Detail

TransformContext

public TransformContext(CanvasComponent component)
Create a transform context associated with the given display component.

Method Detail

checkCacheValid

public void checkCacheValid(TransformContext ancestor)
Check transform cache validity. The argument is an ancestor context of this context. If the ancestor is not valid, then all of the contexts from this one up to the ancestor are marked invalid.


concatenate

public void concatenate(java.awt.geom.AffineTransform at)
Concatenate this transform context with the given transform.


getComponent

public CanvasComponent getComponent()
Get the component that this context is associated with. The component is set in the constructor and cannot be changed.


getInverseTransform

public java.awt.geom.AffineTransform getInverseTransform()
Get the transform from parent coordinates into local coordinates.


getParent

public TransformContext getParent()
Get the parent transform context of this one, or null if this context is at the root of the transform tree.


getScreenTransform

public java.awt.geom.AffineTransform getScreenTransform()
Get the transform from local coordinates into screen coordinates.


getTransform

public java.awt.geom.AffineTransform getTransform()
Get the transform of this context. This is the transform from this context into the parent's context.


getTransform

public java.awt.geom.AffineTransform getTransform(TransformContext context)
Get the transform of this context, relative to the given context. This is the transform from this context into the given context, which must enclose this one.


getVersion

public int getVersion()
Get the version number of the transform context. The version number is incremented whenever the transform changes, so can be used by client components to figure out when to update cached data based upon the transform.


invalidateCache

public void invalidateCache()
Notify that cached data based on the transform is now invalid. Increment the version number so that clients can use it to tell if they need to update data based on the transform.


isCacheValid

public boolean isCacheValid()
Test if the cache is valid.


push

public void push(java.awt.Graphics2D g)
Push this transform onto the graphics stack.


pop

public void pop(java.awt.Graphics2D g)
Pop this transform off the graphics stack.


preConcatenate

public void preConcatenate(java.awt.geom.AffineTransform at)
Pre-concatenate this transform context with the given transform.


setTransform

public void setTransform(java.awt.geom.AffineTransform at)
Set the transform that maps local coordinates into the parent's coordinates. If there is no parent, the "parent" is taken to be the screen. An exception will be thrown if the transform is null. This method invalidates any cached transforms. Note that the transform may be remembered by this context, so the caller must make sure that it will not be subsequently modified.


translate

public void translate(double x,
                      double y)
Translate this context the given distance.


validateCache

private void validateCache()
Recompute the cached transforms.