/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package org.xmind.gef.draw2d.geometry; /** * @author Frank Shaka */ public abstract class PrecisionPointPairBase { protected PrecisionPoint point1 = new PrecisionPoint(); protected PrecisionPoint point2 = new PrecisionPoint(); public PrecisionPointPairBase() { } public PrecisionPointPairBase(PrecisionPoint point1, PrecisionPoint point2) { this(point1.x, point1.y, point2.x, point2.y); } public PrecisionPointPairBase(double x1, double y1, double x2, double y2) { this.point1.setLocation(x1, y1); this.point2.setLocation(x2, y2); } public PrecisionRectangle getBounds() { return new PrecisionRectangle(point1, point2); } public PrecisionPoint getCenter() { return point1.getCenter(point2); } public void translate(double dx, double dy) { translateFirstPoint(dx, dy); translateSecondPoint(dx, dy); } public void translate(double dx1, double dy1, double dx2, double dy2) { translateFirstPoint(dx1, dy1); translateSecondPoint(dx2, dy2); } public void translate(PrecisionDimension offset) { translate(offset.width, offset.height); } public void translate(PrecisionDimension originOffset, PrecisionDimension terminusOffset) { translate(originOffset.width, originOffset.height, terminusOffset.width, terminusOffset.height); } public void translateFirstPoint(double dx, double dy) { point1.translate(dx, dy); } public void translateFirstPoint(PrecisionDimension offset) { translateFirstPoint(offset.width, offset.height); } public void translateSecondPoint(double dx, double dy) { point2.translate(dx, dy); } public void translateSecondPoint(PrecisionDimension offset) { translateSecondPoint(offset.width, offset.height); } public PrecisionPointPairBase swap() { double x = point1.x; double y = point1.y; point1.setLocation(point2); point2.setLocation(x, y); return this; } public abstract PrecisionPointPairBase getCopy(); public boolean equals(Object obj) { if (obj == this) return true; if (!(obj instanceof PrecisionPointPair)) return false; PrecisionPointPair pp = (PrecisionPointPair) obj; return point1.equals(pp.point1) && point2.equals(pp.point2); } public String toString() { return "[(" + point1.x + "," + point1.y + "), (" + point2.x + "," + point2.y + ")]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ } public int hashCode() { return point1.hashCode() ^ point2.hashCode(); } }