19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this work for additional information regarding copyright ownership. 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (the "License"); you may not use this file except in compliance with 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the License. You may obtain a copy of the License at 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @author Denis M. Kishenko 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @version $Revision$ 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage java.awt; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.geom.Point2D; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.Serializable; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The Point class represents a point location with coordinates X, Y in current 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * coordinate system. 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @since Android 1.0 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Point extends Point2D implements Serializable { 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The Constant serialVersionUID. 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final long serialVersionUID = -5276940640259749850L; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The X coordinate of Point. 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int x; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The Y coordinate of Point. 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int y; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Instantiates a new point with (0, O) coordinates, the origin of 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * coordinate system. 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Point() { 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setLocation(0, 0); 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Instantiates a new point with (x, y) coordinates. 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the X coordinate of Point. 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Y coordinate of Point. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Point(int x, int y) { 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setLocation(x, y); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Instantiates a new point, giving it the same location as the parameter p. 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param p 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Point object giving the coordinates of the new point. 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Point(Point p) { 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setLocation(p.x, p.y); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Compares current Point with the specified object. 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param obj 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Object to be compared. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true, if the Object being compared is a Point whose coordinates 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * are equal to the coordinates of this Point, false otherwise. 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see java.awt.geom.Point2D#equals(Object) 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean equals(Object obj) { 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (obj == this) { 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (obj instanceof Point) { 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Point p = (Point)obj; 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return x == p.x && y == p.y; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns string representation of the current Point object. 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a string representation of the current Point object. 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getClass().getName() + "[x=" + x + ",y=" + y + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets X coordinate of Point as a double. 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return X coordinate of the point as a double. 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see java.awt.geom.Point2D#getX() 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public double getX() { 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return x; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets Y coordinate of Point as a double. 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Y coordinate of the point as a double. 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see java.awt.geom.Point2D#getY() 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public double getY() { 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return y; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the location of the Point as a new Point object. 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a copy of the Point. 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Point getLocation() { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Point(x, y); 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the location of the Point to the same coordinates as p. 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param p 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Point that gives the new location. 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setLocation(Point p) { 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setLocation(p.x, p.y); 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the location of the Point to the coordinates X, Y. 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the X coordinate of the Point's new location. 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Y coordinate of the Point's new location. 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setLocation(int x, int y) { 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.x = x; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.y = y; 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the location of Point to the specified double coordinates. 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the X the Point's new location. 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Y the Point's new location. 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see java.awt.geom.Point2D#setLocation(double, double) 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setLocation(double x, double y) { 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x = x < Integer.MIN_VALUE ? Integer.MIN_VALUE : x > Integer.MAX_VALUE ? Integer.MAX_VALUE 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : x; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project y = y < Integer.MIN_VALUE ? Integer.MIN_VALUE : y > Integer.MAX_VALUE ? Integer.MAX_VALUE 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : y; 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setLocation((int)Math.round(x), (int)Math.round(y)); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Moves the Point to the specified (x, y) location. 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the X coordinate of the new location. 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Y coordinate of the new location. 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void move(int x, int y) { 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setLocation(x, y); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Translates current Point moving it from the position (x, y) to the new 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * position given by (x+dx, x+dy) coordinates. 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param dx 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the horizontal delta - the Point is moved to this distance 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * along X axis. 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param dy 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the vertical delta - the Point is moved to this distance along 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Y axis. 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void translate(int dx, int dy) { 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x += dx; 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project y += dy; 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 212