/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.reporting.libraries.base.util;
import java.awt.geom.Dimension2D;
import java.io.Serializable;
/**
* A dimension object specified using <code>float</code> values.
*
* @author Thomas Morgner
*/
public class FloatDimension extends Dimension2D implements Serializable {
/**
* For serialization.
*/
private static final long serialVersionUID = 5367882923248086744L;
/**
* The width.
*/
private float width;
/**
* The height.
*/
private float height;
/**
* Creates a new dimension object with width and height set to zero.
*/
public FloatDimension() {
this.width = 0.0f;
this.height = 0.0f;
}
/**
* Creates a new dimension that is a copy of another dimension.
*
* @param fd the dimension to copy.
*/
public FloatDimension( final FloatDimension fd ) {
this.width = fd.width;
this.height = fd.height;
}
/**
* Creates a new dimension.
*
* @param width the width.
* @param height the height.
*/
public FloatDimension( final float width, final float height ) {
this.width = width;
this.height = height;
}
/**
* Returns the width.
*
* @return the width.
*/
public double getWidth() {
return this.width;
}
/**
* Returns the height.
*
* @return the height.
*/
public double getHeight() {
return this.height;
}
/**
* Sets the width.
*
* @param width the width.
*/
public void setWidth( final double width ) {
this.width = (float) width;
}
/**
* Sets the height.
*
* @param height the height.
*/
public void setHeight( final double height ) {
this.height = (float) height;
}
/**
* Sets the size of this <code>Dimension</code> object to the specified width and height. This method is included for
* completeness, to parallel the {@link java.awt.Component#getSize() getSize} method of {@link java.awt.Component}.
*
* @param width the new width for the <code>Dimension</code> object
* @param height the new height for the <code>Dimension</code> object
*/
public void setSize( final double width, final double height ) {
setHeight( (float) height );
setWidth( (float) width );
}
/**
* Creates and returns a copy of this object.
*
* @return a clone of this instance.
* @see Cloneable
*/
public Object clone() {
return super.clone();
}
/**
* Returns a string representation of the object. In general, the <code>toString</code> method returns a string that
* "textually represents" this object. The result should be a concise but informative representation that is easy for
* a person to read.
* <p/>
*
* @return a string representation of the object.
*/
public String toString() {
return getClass().getName() + ":={width=" + getWidth() + ", height="
+ getHeight() + '}';
}
/**
* Tests this object for equality with another object.
*
* @param o the other object.
* @return <code>true</code> or <code>false</code>.
*/
public boolean equals( final Object o ) {
if ( this == o ) {
return true;
}
if ( !( o instanceof FloatDimension ) ) {
return false;
}
final FloatDimension floatDimension = (FloatDimension) o;
//noinspection FloatingPointEquality
if ( this.height != floatDimension.height ) {
return false;
}
//noinspection FloatingPointEquality
if ( this.width != floatDimension.width ) {
return false;
}
return true;
}
/**
* Returns a hash code.
*
* @return A hash code.
*/
public int hashCode() {
int result;
result = Float.floatToIntBits( this.width );
result = 29 * result + Float.floatToIntBits( this.height );
return result;
}
}