/** * */ package icy.type.dimension; import java.awt.Dimension; /** * The <code>Dimension2D</code> class is to encapsulate a 2D dimension (X,Y). * * @author Stephane */ public abstract class Dimension2D extends java.awt.geom.Dimension2D { /** * Returns the size of the X dimension in double precision.<br> * Same as {@link #getWidth()} * * @return the size of the X dimension. * @see Dimension2D#getWidth() */ public double getSizeX() { return getWidth(); } /** * Returns the size of the Y dimension in double precision.<br> * Same as {@link #getHeight()} * * @return the size of the Y dimension. * @see Dimension2D#getHeight() */ public double getSizeY() { return getHeight(); } /** * Sets the size of the X dimension of this <code>Dimension2D</code> in <code>double</code> * precision. */ public abstract void setSizeX(double value); /** * Sets the size of the Y dimension of this <code>Dimension2D</code> in <code>double</code> * precision. */ public abstract void setSizeY(double value); /** * Sets the size of this <code>Dimension2D</code> object. * * @param sizeX * the new size for the X dimension * @param sizeY * the new size for the Y dimension */ @Override public abstract void setSize(double sizeX, double sizeY); /** * Returns an integer {@link Dimension} that encloses the double <code>Dimension2D</code>.<br> * The returned <code>Dimension</code> might also fail to completely enclose the original double * <code>Dimension2D</code> if it overflows the limited range of the integer data type. * * @return an integer <code>Dimension</code> that completely encloses * the actual double <code>Dimension2D</code>. */ public Dimension getDimInt() { return new Dimension((int) Math.ceil(getSizeX()), (int) Math.ceil(getSizeY())); } /** * Returns <code>true</code> if the X dimension should be considered as infinite. */ public abstract boolean isInfiniteX(); /** * Returns <code>true</code> if the Y dimension should be considered as infinite. */ public abstract boolean isInfiniteY(); @Override public boolean equals(Object obj) { if (obj instanceof Dimension2D) { final Dimension2D dim = (Dimension2D) obj; return (getSizeX() == dim.getSizeX()) && (getSizeY() == dim.getSizeY()); } return super.equals(obj); } @Override public String toString() { return getClass().getName() + "[" + getSizeX() + "," + getSizeY() + "]"; } public static class Double extends Dimension2D { public double sizeX; public double sizeY; public Double(double sizeX, double sizeY) { super(); this.sizeX = sizeX; this.sizeY = sizeY; } public Double(double[] sizeXY) { final int len = sizeXY.length; if (len > 0) sizeX = sizeXY[0]; if (len > 1) sizeY = sizeXY[1]; } public Double() { this(0d, 0d); } @Override public double getWidth() { return sizeX; } @Override public double getHeight() { return sizeY; } @Override public void setSize(double sizeX, double sizeY) { this.sizeX = sizeX; this.sizeY = sizeY; } @Override public void setSizeX(double value) { sizeX = value; } @Override public void setSizeY(double value) { sizeY = value; } @Override public boolean isInfiniteX() { return (getSizeX() == java.lang.Double.POSITIVE_INFINITY); } @Override public boolean isInfiniteY() { return (getSizeY() == java.lang.Double.POSITIVE_INFINITY); } } public static class Float extends Dimension2D { public float sizeX; public float sizeY; public Float(float sizeX, float sizeY) { super(); this.sizeX = sizeX; this.sizeY = sizeY; } public Float(float[] sizeXY) { final int len = sizeXY.length; if (len > 0) sizeX = sizeXY[0]; if (len > 1) sizeY = sizeXY[1]; } public Float() { this(0f, 0f); } @Override public double getWidth() { return sizeX; } @Override public double getHeight() { return sizeY; } @Override public void setSize(double sizeX, double sizeY) { this.sizeX = (float) sizeX; this.sizeY = (float) sizeY; } @Override public void setSizeX(double value) { sizeX = (float) value; } @Override public void setSizeY(double value) { sizeY = (float) value; } @Override public boolean isInfiniteX() { return (getSizeX() == java.lang.Float.POSITIVE_INFINITY); } @Override public boolean isInfiniteY() { return (getSizeY() == java.lang.Float.POSITIVE_INFINITY); } } }