001 /* ======================================================================== 002 * JCommon : a free general purpose class library for the Java(tm) platform 003 * ======================================================================== 004 * 005 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. 006 * 007 * Project Info: http://www.jfree.org/jcommon/index.html 008 * 009 * This library is free software; you can redistribute it and/or modify it 010 * under the terms of the GNU Lesser General Public License as published by 011 * the Free Software Foundation; either version 2.1 of the License, or 012 * (at your option) any later version. 013 * 014 * This library is distributed in the hope that it will be useful, but 015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 017 * License for more details. 018 * 019 * You should have received a copy of the GNU Lesser General Public 020 * License along with this library; if not, write to the Free Software 021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 022 * USA. 023 * 024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 025 * in the United States and other countries.] 026 * 027 * ------------------- 028 * FloatDimension.java 029 * ------------------- 030 * (C)opyright 2002-2005, by Thomas Morgner and Contributors. 031 * 032 * Original Author: Thomas Morgner; 033 * Contributor(s): David Gilbert (for Object Refinery Limited); 034 * 035 * $Id: FloatDimension.java,v 1.4 2005/11/03 09:26:51 mungady Exp $ 036 * 037 * Changes 038 * ------- 039 * 05-Dec-2002 : Updated Javadocs (DG); 040 * 29-Apr-2003 : Moved to JCommon 041 * 042 */ 043 044 package org.jfree.ui; 045 046 import java.awt.geom.Dimension2D; 047 import java.io.Serializable; 048 049 /** 050 * A dimension object specified using <code>float</code> values. 051 * 052 * @author Thomas Morgner 053 */ 054 public class FloatDimension extends Dimension2D 055 implements Serializable { 056 057 /** For serialization. */ 058 private static final long serialVersionUID = 5367882923248086744L; 059 060 /** The width. */ 061 private float width; 062 063 /** The height. */ 064 private float height; 065 066 /** 067 * Creates a new dimension object with width and height set to zero. 068 */ 069 public FloatDimension() { 070 this.width = 0.0f; 071 this.height = 0.0f; 072 } 073 074 /** 075 * Creates a new dimension that is a copy of another dimension. 076 * 077 * @param fd the dimension to copy. 078 */ 079 public FloatDimension(final FloatDimension fd) { 080 this.width = fd.width; 081 this.height = fd.height; 082 } 083 084 /** 085 * Creates a new dimension. 086 * 087 * @param width the width. 088 * @param height the height. 089 */ 090 public FloatDimension(final float width, final float height) { 091 this.width = width; 092 this.height = height; 093 } 094 095 /** 096 * Returns the width. 097 * 098 * @return the width. 099 */ 100 public double getWidth() { 101 return this.width; 102 } 103 104 /** 105 * Returns the height. 106 * 107 * @return the height. 108 */ 109 public double getHeight() { 110 return this.height; 111 } 112 113 /** 114 * Sets the width. 115 * 116 * @param width the width. 117 */ 118 public void setWidth(final double width) { 119 this.width = (float) width; 120 } 121 122 /** 123 * Sets the height. 124 * 125 * @param height the height. 126 */ 127 public void setHeight(final double height) { 128 this.height = (float) height; 129 } 130 131 /** 132 * Sets the size of this <code>Dimension</code> object to the specified 133 * width and height. This method is included for completeness, to parallel 134 * the {@link java.awt.Component#getSize() getSize} method of 135 * {@link java.awt.Component}. 136 * 137 * @param width the new width for the <code>Dimension</code> object 138 * @param height the new height for the <code>Dimension</code> object 139 */ 140 public void setSize(final double width, final double height) { 141 setHeight((float) height); 142 setWidth((float) width); 143 } 144 145 /** 146 * Creates and returns a copy of this object. 147 * 148 * @return a clone of this instance. 149 * @see java.lang.Cloneable 150 */ 151 public Object clone() { 152 return super.clone(); 153 } 154 155 /** 156 * Returns a string representation of the object. In general, the 157 * <code>toString</code> method returns a string that 158 * "textually represents" this object. The result should 159 * be a concise but informative representation that is easy for a 160 * person to read. 161 * <p> 162 * 163 * @return a string representation of the object. 164 */ 165 public String toString() { 166 return getClass().getName() + ":={width=" + getWidth() + ", height=" 167 + getHeight() + "}"; 168 } 169 170 /** 171 * Tests this object for equality with another object. 172 * 173 * @param o the other object. 174 * 175 * @return <code>true</code> or <code>false</code>. 176 */ 177 public boolean equals(final Object o) { 178 if (this == o) { 179 return true; 180 } 181 if (!(o instanceof FloatDimension)) { 182 return false; 183 } 184 185 final FloatDimension floatDimension = (FloatDimension) o; 186 187 if (this.height != floatDimension.height) { 188 return false; 189 } 190 if (this.width != floatDimension.width) { 191 return false; 192 } 193 194 return true; 195 } 196 197 /** 198 * Returns a hash code. 199 * 200 * @return A hash code. 201 */ 202 public int hashCode() { 203 int result; 204 result = Float.floatToIntBits(this.width); 205 result = 29 * result + Float.floatToIntBits(this.height); 206 return result; 207 } 208 } 209