org.deegree_impl.model.resources
Class XAffineTransform

java.lang.Object
  extended byjava.awt.geom.AffineTransform
      extended byorg.deegree_impl.model.resources.XAffineTransform
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable
Direct Known Subclasses:
AffineTransform2D

public abstract class XAffineTransform
extends java.awt.geom.AffineTransform

Utility methods for affine transforms. This class provides a set of public static methods working on any AffineTransform.

Class XAffineTransform overrides all mutable methods of AffineTransform in order to check for permission before to change the transform's state. If checkPermission() is defined to always thrown an exception, then XAffineTransform is immutable.

Version:
1.0
Author:
Martin Desruisseaux
See Also:
Serialized Form

Field Summary
private static double EPS
          Tolerance value for floating point comparaisons.
private static long serialVersionUID
          Serial number for interoperability with different versions.
 
Fields inherited from class java.awt.geom.AffineTransform
TYPE_FLIP, TYPE_GENERAL_ROTATION, TYPE_GENERAL_SCALE, TYPE_GENERAL_TRANSFORM, TYPE_IDENTITY, TYPE_MASK_ROTATION, TYPE_MASK_SCALE, TYPE_QUADRANT_ROTATION, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE
 
Constructor Summary
protected XAffineTransform(java.awt.geom.AffineTransform tr)
          Constructs a new XAffineTransform that is a copy of the specified AffineTransform object.
 
Method Summary
protected abstract  void checkPermission()
          Check if the caller is allowed to change this XAffineTransform's state.
 void concatenate(java.awt.geom.AffineTransform Tx)
          Check for permission before concatenating this transform.
static java.awt.geom.AffineTransform getScaleInstance(double sx, double sy, double x, double y)
          Retourne une transformation affine représentant un zoom fait autour d'un point central (x,y).
static double getScaleX0(java.awt.geom.AffineTransform zoom)
          Retourne le facteur d'échelle x en annulant l'effet d'une éventuelle rotation.
static double getScaleY0(java.awt.geom.AffineTransform zoom)
          Retourne le facteur d'échelle y en annulant l'effet d'une éventuelle rotation.
static java.awt.geom.Point2D inverseDeltaTransform(java.awt.geom.AffineTransform transform, java.awt.geom.Point2D source, java.awt.geom.Point2D dest)
          Calcule la transformation affine inverse d'un point sans prendre en compte la translation.
static java.awt.geom.Rectangle2D inverseTransform(java.awt.geom.AffineTransform transform, java.awt.geom.Rectangle2D bounds, java.awt.geom.Rectangle2D dest)
          Retourne un rectangle qui contient entièrement la transformation inverse de bounds.
 void preConcatenate(java.awt.geom.AffineTransform Tx)
          Check for permission before concatenating this transform.
 void rotate(double theta)
          Check for permission before rotating this transform.
 void rotate(double theta, double x, double y)
          Check for permission before rotating this transform.
static void round(java.awt.geom.AffineTransform zoom)
           
 void scale(double sx, double sy)
          Check for permission before scaling this transform.
 void setToIdentity()
          Check for permission before setting this transform.
 void setToRotation(double theta)
          Check for permission before setting this transform.
 void setToRotation(double theta, double x, double y)
          Check for permission before setting this transform.
 void setToScale(double sx, double sy)
          Check for permission before setting this transform.
 void setToShear(double shx, double shy)
          Check for permission before setting this transform.
 void setToTranslation(double tx, double ty)
          Check for permission before setting this transform.
 void setTransform(java.awt.geom.AffineTransform Tx)
          Check for permission before setting this transform.
 void setTransform(double m00, double m10, double m01, double m11, double m02, double m12)
          Check for permission before setting this transform.
 void shear(double shx, double shy)
          Check for permission before shearing this transform.
static java.awt.geom.Rectangle2D transform(java.awt.geom.AffineTransform transform, java.awt.geom.Rectangle2D bounds, java.awt.geom.Rectangle2D dest)
          Retourne un rectangle qui contient entièrement la transformation directe de bounds.
 void translate(double tx, double ty)
          Check for permission before translating this transform.
 
Methods inherited from class java.awt.geom.AffineTransform
clone, createInverse, createTransformedShape, deltaTransform, deltaTransform, equals, getDeterminant, getMatrix, getRotateInstance, getRotateInstance, getScaleInstance, getScaleX, getScaleY, getShearInstance, getShearX, getShearY, getTranslateInstance, getTranslateX, getTranslateY, getType, hashCode, inverseTransform, inverseTransform, isIdentity, toString, transform, transform, transform, transform, transform, transform
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
Serial number for interoperability with different versions.

See Also:
Constant Field Values

EPS

private static final double EPS
Tolerance value for floating point comparaisons.

See Also:
Constant Field Values
Constructor Detail

XAffineTransform

protected XAffineTransform(java.awt.geom.AffineTransform tr)
Constructs a new XAffineTransform that is a copy of the specified AffineTransform object.

Method Detail

checkPermission

protected abstract void checkPermission()
Check if the caller is allowed to change this XAffineTransform's state.


translate

public void translate(double tx,
                      double ty)
Check for permission before translating this transform.


rotate

public void rotate(double theta)
Check for permission before rotating this transform.


rotate

public void rotate(double theta,
                   double x,
                   double y)
Check for permission before rotating this transform.


scale

public void scale(double sx,
                  double sy)
Check for permission before scaling this transform.


shear

public void shear(double shx,
                  double shy)
Check for permission before shearing this transform.


setToIdentity

public void setToIdentity()
Check for permission before setting this transform.


setToTranslation

public void setToTranslation(double tx,
                             double ty)
Check for permission before setting this transform.


setToRotation

public void setToRotation(double theta)
Check for permission before setting this transform.


setToRotation

public void setToRotation(double theta,
                          double x,
                          double y)
Check for permission before setting this transform.


setToScale

public void setToScale(double sx,
                       double sy)
Check for permission before setting this transform.


setToShear

public void setToShear(double shx,
                       double shy)
Check for permission before setting this transform.


setTransform

public void setTransform(java.awt.geom.AffineTransform Tx)
Check for permission before setting this transform.


setTransform

public void setTransform(double m00,
                         double m10,
                         double m01,
                         double m11,
                         double m02,
                         double m12)
Check for permission before setting this transform.


concatenate

public void concatenate(java.awt.geom.AffineTransform Tx)
Check for permission before concatenating this transform.


preConcatenate

public void preConcatenate(java.awt.geom.AffineTransform Tx)
Check for permission before concatenating this transform.


transform

public static java.awt.geom.Rectangle2D transform(java.awt.geom.AffineTransform transform,
                                                  java.awt.geom.Rectangle2D bounds,
                                                  java.awt.geom.Rectangle2D dest)
Retourne un rectangle qui contient entièrement la transformation directe de bounds. Cette opération est l'équivalent de createTransformedShape(bounds).getBounds2D().

Parameters:
transform - Transformation affine à utiliser.
bounds - Rectangle à transformer. Ce rectangle ne sera pas modifié.
dest - Rectangle dans lequel placer le résultat. Si nul, un nouveau rectangle sera créé.
Returns:
La transformation directe du rectangle bounds.

inverseTransform

public static java.awt.geom.Rectangle2D inverseTransform(java.awt.geom.AffineTransform transform,
                                                         java.awt.geom.Rectangle2D bounds,
                                                         java.awt.geom.Rectangle2D dest)
                                                  throws java.awt.geom.NoninvertibleTransformException
Retourne un rectangle qui contient entièrement la transformation inverse de bounds. Cette opération est l'équivalent de createInverse().createTransformedShape(bounds).getBounds2D().

Parameters:
transform - Transformation affine à utiliser.
bounds - Rectangle à transformer. Ce rectangle ne sera pas modifié.
dest - Rectangle dans lequel placer le résultat. Si nul, un nouveau rectangle sera créé.
Returns:
La transformation inverse du rectangle bounds.
Throws:
java.awt.geom.NoninvertibleTransformException - si la transformation affine ne peut pas être inversée.

inverseDeltaTransform

public static java.awt.geom.Point2D inverseDeltaTransform(java.awt.geom.AffineTransform transform,
                                                          java.awt.geom.Point2D source,
                                                          java.awt.geom.Point2D dest)
                                                   throws java.awt.geom.NoninvertibleTransformException
Calcule la transformation affine inverse d'un point sans prendre en compte la translation.

Parameters:
transform - Transformation affine à utiliser.
source - Point à transformer. Ce rectangle ne sera pas modifié.
dest - Point dans lequel placer le résultat. Si nul, un nouveau point sera créé.
Returns:
La transformation inverse du point source.
Throws:
java.awt.geom.NoninvertibleTransformException - si la transformation affine ne peut pas être inversée.

getScaleX0

public static double getScaleX0(java.awt.geom.AffineTransform zoom)
Retourne le facteur d'échelle x en annulant l'effet d'une éventuelle rotation. Ce facteur est calculé par .


getScaleY0

public static double getScaleY0(java.awt.geom.AffineTransform zoom)
Retourne le facteur d'échelle y en annulant l'effet d'une éventuelle rotation. Ce facteur est calculé par .


getScaleInstance

public static java.awt.geom.AffineTransform getScaleInstance(double sx,
                                                             double sy,
                                                             double x,
                                                             double y)
Retourne une transformation affine représentant un zoom fait autour d'un point central (x,y). Les transformations laisseront inchangées la coordonnée (x,y) spécifiée.

Parameters:
sx - Echelle le long de l'axe des x.
sy - Echelle le long de l'axe des y.
x - Coordonnées x du point central.
y - Coordonnées y du point central.
Returns:
Transformation affine d'un zoom qui laisse la coordonnée (x,y) inchangée.

round

public static void round(java.awt.geom.AffineTransform zoom)