001 /*
002 * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package java.awt.geom;
027
028 /**
029 * The <code>Dimension2D</code> class is to encapsulate a width
030 * and a height dimension.
031 * <p>
032 * This class is only the abstract superclass for all objects that
033 * store a 2D dimension.
034 * The actual storage representation of the sizes is left to
035 * the subclass.
036 *
037 * @version 1.21, 05/05/07
038 * @author Jim Graham
039 * @since 1.2
040 */
041 public abstract class Dimension2D implements Cloneable {
042
043 /**
044 * This is an abstract class that cannot be instantiated directly.
045 * Type-specific implementation subclasses are available for
046 * instantiation and provide a number of formats for storing
047 * the information necessary to satisfy the various accessor
048 * methods below.
049 *
050 * @see java.awt.Dimension
051 * @since 1.2
052 */
053 protected Dimension2D() {
054 }
055
056 /**
057 * Returns the width of this <code>Dimension</code> in double
058 * precision.
059 * @return the width of this <code>Dimension</code>.
060 * @since 1.2
061 */
062 public abstract double getWidth();
063
064 /**
065 * Returns the height of this <code>Dimension</code> in double
066 * precision.
067 * @return the height of this <code>Dimension</code>.
068 * @since 1.2
069 */
070 public abstract double getHeight();
071
072 /**
073 * Sets the size of this <code>Dimension</code> object to the
074 * specified width and height.
075 * This method is included for completeness, to parallel the
076 * {@link java.awt.Component#getSize getSize} method of
077 * {@link java.awt.Component}.
078 * @param width the new width for the <code>Dimension</code>
079 * object
080 * @param height the new height for the <code>Dimension</code>
081 * object
082 * @since 1.2
083 */
084 public abstract void setSize(double width, double height);
085
086 /**
087 * Sets the size of this <code>Dimension2D</code> object to
088 * match the specified size.
089 * This method is included for completeness, to parallel the
090 * <code>getSize</code> method of <code>Component</code>.
091 * @param d the new size for the <code>Dimension2D</code>
092 * object
093 * @since 1.2
094 */
095 public void setSize(Dimension2D d) {
096 setSize(d.getWidth(), d.getHeight());
097 }
098
099 /**
100 * Creates a new object of the same class as this object.
101 *
102 * @return a clone of this instance.
103 * @exception OutOfMemoryError if there is not enough memory.
104 * @see java.lang.Cloneable
105 * @since 1.2
106 */
107 public Object clone() {
108 try {
109 return super .clone();
110 } catch (CloneNotSupportedException e) {
111 // this shouldn't happen, since we are Cloneable
112 throw new InternalError();
113 }
114 }
115 }
|