1 /*
2  * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package java.awt.geom;
27 
28 /**
29  * The {@code Dimension2D} class is to encapsulate a width
30  * and a height dimension.
31  * <p>
32  * This class is only the abstract superclass for all objects that
33  * store a 2D dimension.
34  * The actual storage representation of the sizes is left to
35  * the subclass.
36  *
37  * @author      Jim Graham
38  * @since 1.2
39  */
40 public abstract class Dimension2D implements Cloneable {
41 
42     /**
43      * This is an abstract class that cannot be instantiated directly.
44      * Type-specific implementation subclasses are available for
45      * instantiation and provide a number of formats for storing
46      * the information necessary to satisfy the various accessor
47      * methods below.
48      *
49      * @see java.awt.Dimension
50      * @since 1.2
51      */
Dimension2D()52     protected Dimension2D() {
53     }
54 
55     /**
56      * Returns the width of this {@code Dimension} in double
57      * precision.
58      * @return the width of this {@code Dimension}.
59      * @since 1.2
60      */
getWidth()61     public abstract double getWidth();
62 
63     /**
64      * Returns the height of this {@code Dimension} in double
65      * precision.
66      * @return the height of this {@code Dimension}.
67      * @since 1.2
68      */
getHeight()69     public abstract double getHeight();
70 
71     /**
72      * Sets the size of this {@code Dimension} object to the
73      * specified width and height.
74      * This method is included for completeness, to parallel the
75      * {@link java.awt.Component#getSize getSize} method of
76      * {@link java.awt.Component}.
77      * @param width  the new width for the {@code Dimension}
78      * object
79      * @param height  the new height for the {@code Dimension}
80      * object
81      * @since 1.2
82      */
setSize(double width, double height)83     public abstract void setSize(double width, double height);
84 
85     /**
86      * Sets the size of this {@code Dimension2D} object to
87      * match the specified size.
88      * This method is included for completeness, to parallel the
89      * {@code getSize} method of {@code Component}.
90      * @param d  the new size for the {@code Dimension2D}
91      * object
92      * @since 1.2
93      */
setSize(Dimension2D d)94     public void setSize(Dimension2D d) {
95         setSize(d.getWidth(), d.getHeight());
96     }
97 
98     /**
99      * Creates a new object of the same class as this object.
100      *
101      * @return     a clone of this instance.
102      * @exception  OutOfMemoryError            if there is not enough memory.
103      * @see        java.lang.Cloneable
104      * @since      1.2
105      */
clone()106     public Object clone() {
107         try {
108             return super.clone();
109         } catch (CloneNotSupportedException e) {
110             // this shouldn't happen, since we are Cloneable
111             throw new InternalError(e);
112         }
113     }
114 }
115