/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.service.protocol; /** * A point representing a location in {@code (x,y)} coordinate space, * specified in integer precision. *

* This class has been inspired by the java.awt.Point class. *

* @author Julien Waechter * @author Emil Ivov */ public class WhiteboardPoint implements Cloneable { /** * The X coordinate of this WhiteboadPoint. */ private double x; /** * The Y coordinate of this Point. */ private double y; /** * Constructs and initializes a point with the same location as * the specified Point object. * @param p a point */ public WhiteboardPoint(WhiteboardPoint p) { this(p.x, p.y); } /** * Constructs and initializes a point at the specified (x,y) * location in the coordinate space. * * @param x the X coordinate of the newly constructed Point * @param y the Y coordinate of the newly constructed Point * @since 1.0 */ public WhiteboardPoint(double x, double y) { this.x = x; this.y = y; } /** * Returns the X coordinate of this WhiteboardPoint. * * @return the x coordinate of this WhiteboardPoint. */ public double getX() { return x; } /** * Returns the Y coordinate of this WhiteboardPoint. * * @return the y coordinate of this WhiteboardPoint. */ public double getY() { return y; } /** * Sets a new value to the x coordinate. * * @param x the new value of the x coordinate */ public void setX(double x) { this.x = x; } /** * Sets a new value to the y coordinate. * * @param y the new value of the y coordinate */ public void setY(double y) { this.y = y; } /** * Determines whether or not two points are equal. Two instances of * WhiteboardPoint are equal if the values of their * x and y member fields, representing * their position in the coordinate space, are the same. * * @param obj an object to be compared with this WhiteboardPoint * * @return true if the object to be compared is an instance of * WhiteboardPoint and has the same values; false * otherwise. */ @Override public boolean equals(Object obj) { if (obj instanceof WhiteboardPoint) { WhiteboardPoint pt = (WhiteboardPoint)obj; return (x == pt.x) && (y == pt.y); } return false; } /** * 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 null. * * @return a string representation of this point */ @Override public String toString() { return getClass().getName() + "[x=" + x + ",y=" + y + "]"; } /** * Creates and returns a copy of this WhiteboardPoint. * * @return a clone of this WhiteboardPoint instance. */ @Override protected Object clone() { return new WhiteboardPoint(this); } /** * Calculates the distance from this point the given point. * * @param p the point to which to calculate the distance * @return the distance between this point and the given point */ public double distance(WhiteboardPoint p) { double PX = p.getX() - this.getX(); double PY = p.getY() - this.getY(); return Math.sqrt(PX * PX + PY * PY); } }