| /* |
| * Copyright (c) 1995, 2008, 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. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * 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 java.awt; |
| |
| import java.awt.geom.Point2D; |
| import java.beans.Transient; |
| |
| /** |
| * A point representing a location in {@code (x,y)} coordinate space, |
| * specified in integer precision. |
| * |
| * @author Sami Shaio |
| * @since 1.0 |
| */ |
| public class Point extends Point2D implements java.io.Serializable { |
| /** |
| * The X coordinate of this {@code Point}. |
| * If no X coordinate is set it will default to 0. |
| * |
| * @serial |
| * @see #getLocation() |
| * @see #move(int, int) |
| * @since 1.0 |
| */ |
| public int x; |
| |
| /** |
| * The Y coordinate of this {@code Point}. |
| * If no Y coordinate is set it will default to 0. |
| * |
| * @serial |
| * @see #getLocation() |
| * @see #move(int, int) |
| * @since 1.0 |
| */ |
| public int y; |
| |
| /* |
| * JDK 1.1 serialVersionUID |
| */ |
| private static final long serialVersionUID = -5276940640259749850L; |
| |
| /** |
| * Constructs and initializes a point at the origin |
| * (0, 0) of the coordinate space. |
| * @since 1.1 |
| */ |
| public Point() { |
| this(0, 0); |
| } |
| |
| /** |
| * Constructs and initializes a point with the same location as |
| * the specified {@code Point} object. |
| * @param p a point |
| * @since 1.1 |
| */ |
| public Point(Point p) { |
| this(p.x, p.y); |
| } |
| |
| /** |
| * Constructs and initializes a point at the specified |
| * {@code (x,y)} location in the coordinate space. |
| * @param x the X coordinate of the newly constructed {@code Point} |
| * @param y the Y coordinate of the newly constructed {@code Point} |
| * @since 1.0 |
| */ |
| public Point(int x, int y) { |
| this.x = x; |
| this.y = y; |
| } |
| |
| /** |
| * {@inheritDoc} |
| * @since 1.2 |
| */ |
| public double getX() { |
| return x; |
| } |
| |
| /** |
| * {@inheritDoc} |
| * @since 1.2 |
| */ |
| public double getY() { |
| return y; |
| } |
| |
| /** |
| * Returns the location of this point. |
| * This method is included for completeness, to parallel the |
| * {@code getLocation} method of {@code Component}. |
| * @return a copy of this point, at the same location |
| * @see java.awt.Component#getLocation |
| * @see java.awt.Point#setLocation(java.awt.Point) |
| * @see java.awt.Point#setLocation(int, int) |
| * @since 1.1 |
| */ |
| @Transient |
| public Point getLocation() { |
| return new Point(x, y); |
| } |
| |
| /** |
| * Sets the location of the point to the specified location. |
| * This method is included for completeness, to parallel the |
| * {@code setLocation} method of {@code Component}. |
| * @param p a point, the new location for this point |
| * @see java.awt.Component#setLocation(java.awt.Point) |
| * @see java.awt.Point#getLocation |
| * @since 1.1 |
| */ |
| public void setLocation(Point p) { |
| setLocation(p.x, p.y); |
| } |
| |
| /** |
| * Changes the point to have the specified location. |
| * <p> |
| * This method is included for completeness, to parallel the |
| * {@code setLocation} method of {@code Component}. |
| * Its behavior is identical with <code>move(int, int)</code>. |
| * @param x the X coordinate of the new location |
| * @param y the Y coordinate of the new location |
| * @see java.awt.Component#setLocation(int, int) |
| * @see java.awt.Point#getLocation |
| * @see java.awt.Point#move(int, int) |
| * @since 1.1 |
| */ |
| public void setLocation(int x, int y) { |
| move(x, y); |
| } |
| |
| /** |
| * Sets the location of this point to the specified double coordinates. |
| * The double values will be rounded to integer values. |
| * Any number smaller than {@code Integer.MIN_VALUE} |
| * will be reset to {@code MIN_VALUE}, and any number |
| * larger than {@code Integer.MAX_VALUE} will be |
| * reset to {@code MAX_VALUE}. |
| * |
| * @param x the X coordinate of the new location |
| * @param y the Y coordinate of the new location |
| * @see #getLocation |
| */ |
| public void setLocation(double x, double y) { |
| this.x = (int) Math.floor(x+0.5); |
| this.y = (int) Math.floor(y+0.5); |
| } |
| |
| /** |
| * Moves this point to the specified location in the |
| * {@code (x,y)} coordinate plane. This method |
| * is identical with <code>setLocation(int, int)</code>. |
| * @param x the X coordinate of the new location |
| * @param y the Y coordinate of the new location |
| * @see java.awt.Component#setLocation(int, int) |
| */ |
| public void move(int x, int y) { |
| this.x = x; |
| this.y = y; |
| } |
| |
| /** |
| * Translates this point, at location {@code (x,y)}, |
| * by {@code dx} along the {@code x} axis and {@code dy} |
| * along the {@code y} axis so that it now represents the point |
| * {@code (x+dx,y+dy)}. |
| * |
| * @param dx the distance to move this point |
| * along the X axis |
| * @param dy the distance to move this point |
| * along the Y axis |
| */ |
| public void translate(int dx, int dy) { |
| this.x += dx; |
| this.y += dy; |
| } |
| |
| /** |
| * Determines whether or not two points are equal. Two instances of |
| * {@code Point2D} are equal if the values of their |
| * {@code x} and {@code y} member fields, representing |
| * their position in the coordinate space, are the same. |
| * @param obj an object to be compared with this {@code Point2D} |
| * @return {@code true} if the object to be compared is |
| * an instance of {@code Point2D} and has |
| * the same values; {@code false} otherwise. |
| */ |
| public boolean equals(Object obj) { |
| if (obj instanceof Point) { |
| Point pt = (Point)obj; |
| return (x == pt.x) && (y == pt.y); |
| } |
| return super.equals(obj); |
| } |
| |
| /** |
| * Returns a string representation of this point and its location |
| * in the {@code (x,y)} coordinate space. 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 {@code null}. |
| * |
| * @return a string representation of this point |
| */ |
| public String toString() { |
| return getClass().getName() + "[x=" + x + ",y=" + y + "]"; |
| } |
| } |