public interface XyShape<T extends XyShape> extends Immutable, java.lang.Iterable<XyPoint>
Defines basic methods and enforces immutability and iterability. In addition, shapes must be defined in such a way that translation and uniform scaling do not change their class. Other types of affine transform may change the class. For example, scaling a square by the same factor in both dimensions always results in a square. Translating it by moving it any amount in either dimension always results in a square. However, scaling it by one factor in X and another factor in Y, or applying shears, results in something not a square.
Subclasses should generally provide themselves as the generic type parameter T. For example:
public class XyPoint implements XyShape<XyPoint> {
This clever construction allows you to use e.g. scaledBy() on a shape of
declared type without having to cast the result:
XyPoint original = new XyPoint(100, 100); XyPoint scaled = original.scaledBy(5);Copyright 2007 Partner Software, Inc.
| Modifier and Type | Method and Description |
|---|---|
XyBounds |
getBounds()
Returns an XyBounds object representing the rectangular extents of this
shape.
|
T |
scaledBy(double factor)
Return a scaled version of the shape by multiplying all coordinates by
the given factor in both dimensions.
|
XyShape |
transformedBy(XyTransform transform)
Transform the shape using the given transform.
|
T |
translatedBy(double offsetX,
double offsetY)
Translate the shape by adding all coordinates to the given x and y
offsets.
|
T scaledBy(double factor)
factor - scaling factorT translatedBy(double offsetX, double offsetY)
offsetX - offset for the x dimensionoffsetY - offset for the y dimensionXyShape transformedBy(XyTransform transform)
transform - affine transform to apply.XyBounds getBounds()