--- /dev/null 2017-12-05 08:23:57.000000000 -0800 +++ new/core/JemmyCore/src/org/jemmy/Dimension.java 2017-12-05 08:23:57.000000000 -0800 @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2007, 2017 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package org.jemmy; + + +import java.io.Serializable; + + +/** + * Replacement for java.awt.Dimension + * @author Alexander Kouznetsov + */ +public class Dimension implements Serializable { + + /** + * The width dimension; negative values can be used. + * + * @serial + * @see #getSize + * @see #setSize + */ + public int width; + + /** + * The height dimension; negative values can be used. + * + * @serial + * @see #getSize + * @see #setSize + */ + public int height; + + /* + * JDK 1.1 serialVersionUID + */ + private static final long serialVersionUID = 4723952579491349524L; + + /** + * Creates an instance of Dimension with a width + * of zero and a height of zero. + */ + public Dimension() { + this(0, 0); + } + + /** + * Creates an instance of Dimension whose width + * and height are the same as for the specified dimension. + * + * @param d the specified dimension for the + * width and + * height values + */ + public Dimension(Dimension d) { + this(d.width, d.height); + } + + /** + * Constructs a Dimension and initializes + * it to the specified width and specified height. + * + * @param width the specified width + * @param height the specified height + */ + public Dimension(int width, int height) { + this.width = width; + this.height = height; + } + + /** + * Constructs a Dimension and initializes + * it to the specified width and specified height. All {@code double} + * values are rounded and stored as {@code int} values. + * + * @param width the specified width + * @param height the specified height + */ + public Dimension(double width, double height) { + this.width = (int) Math.round(width); + this.height = (int) Math.round(height); + } + + /** + * {@inheritDoc} + * @return + */ + public double getWidth() { + return width; + } + + /** + * {@inheritDoc} + * @return + */ + public double getHeight() { + return height; + } + + /** + * Sets the size of this Dimension object to + * the specified width and height in double precision. + * Note that if width or height + * are larger than Integer.MAX_VALUE, they will + * be reset to Integer.MAX_VALUE. + * + * @param width the new width for the Dimension object + * @param height the new height for the Dimension object + */ + public void setSize(double width, double height) { + this.width = (int) Math.ceil(width); + this.height = (int) Math.ceil(height); + } + + /** + * Gets the size of this Dimension object. + * @return the size of this dimension, a new instance of + * Dimension with the same width and height + * @see #setSize + */ + public Dimension getSize() { + return new Dimension(width, height); + } + + /** + * Sets the size of this Dimension object to the specified size. + * @param d the new size for this Dimension object + * @see Dimension#getSize + */ + public void setSize(Dimension d) { + setSize(d.width, d.height); + } + + /** + * Sets the size of this Dimension object + * to the specified width and height. + * @param width the new width for this Dimension object + * @param height the new height for this Dimension object + * @see Dimension#getSize + */ + public void setSize(int width, int height) { + this.width = width; + this.height = height; + } + + /** + * Checks whether two dimension objects have equal values. + * @param obj + * @return + */ + @Override + public boolean equals(Object obj) { + if (obj instanceof Dimension) { + Dimension d = (Dimension)obj; + return (width == d.width) && (height == d.height); + } + return false; + } + + /** + * Returns the hash code for this Dimension. + * + * @return a hash code for this Dimension + */ + @Override + public int hashCode() { + int sum = width + height; + return sum * (sum + 1)/2 + width; + } + + /** + * Returns a string representation of the values of this + * Dimension object's height and + * width fields. This method is intended to be used only + * for debugging purposes, and the content and format of the returned + * string may vary between implementations. The returned string may be + * empty but may not be null. + * + * @return a string representation of this Dimension + * object + */ + @Override + public String toString() { + return getClass().getName() + "[width=" + width + ",height=" + height + "]"; + } +}