AWT/Swing merge from GNU Classpath.

From-SVN: r56147
This commit is contained in:
Bryce McKinlay 2002-08-09 04:26:17 +00:00 committed by Bryce McKinlay
parent 097684ce62
commit 7bde45b2eb
490 changed files with 86038 additions and 9753 deletions

View file

@ -1,4 +1,5 @@
/* Copyright (C) 1999, 2000, 2002 Free Software Foundation
/* Point2D.java -- generic point in 2-D space
Copyright (C) 1999, 2000, 2002 Free Software Foundation
This file is part of GNU Classpath.
@ -37,161 +38,358 @@ exception statement from your version. */
package java.awt.geom;
/**
* This class implements a generic point in 2D Cartesian space. The storage
* representation is left up to the subclass. Point includes two useful
* nested classes, for float and double storage respectively.
*
* @author Per Bothner <bothner@cygnus.com>
* @date February 8, 1999.
* @author Eric Blake <ebb9@email.byu.edu>
* @since 1.2
* @status updated to 1.4
*/
/* Written using "Java Class Libraries", 2nd edition, plus online
* API docs for JDK 1.2 beta from http://www.javasoft.com.
* Status: Believed complete and correct, except that neither toString
* nor hashCode have been compared with JDK output.
*/
public abstract class Point2D implements Cloneable
{
/**
* The default constructor.
*
* @see Point
* @see Point2D.Float
* @see Point2D.Double
*/
protected Point2D()
{
}
/**
* Get the X coordinate, in double precision.
*
* @return the x coordinate
*/
public abstract double getX();
/**
* Get the Y coordinate, in double precision.
*
* @return the y coordinate
*/
public abstract double getY();
public abstract void setLocation (double x, double y);
/**
* Set the location of this point to the new coordinates. There may be a
* loss of precision.
*
* @param x the new x coordinate
* @param y the new y coordinate
*/
public abstract void setLocation(double x, double y);
protected Point2D ()
/**
* Set the location of this point to the new coordinates. There may be a
* loss of precision.
*
* @param p the point to copy
* @throws NullPointerException if p is null
*/
public void setLocation(Point2D p)
{
setLocation(p.getX(), p.getY());
}
public void setLocation (Point2D pt) { setLocation(pt.getX(), pt.getY()); }
static public double distanceSq (double X1, double Y1, double X2, double Y2)
/**
* Return the square of the distance between two points.
*
* @param x1 the x coordinate of point 1
* @param y1 the y coordinate of point 1
* @param x2 the x coordinate of point 2
* @param y2 the y coordinate of point 2
* @return (x2 - x1)^2 + (y2 - y1)^2
*/
public static double distanceSq(double x1, double y1, double x2, double y2)
{
X2 -= X1;
Y2 -= Y1;
return X2*X2 + Y2*Y2;
x2 -= x1;
y2 -= y1;
return x2 * x2 + y2 * y2;
}
static public double distance (double X1, double Y1, double X2, double Y2)
/**
* Return the distance between two points.
*
* @param x1 the x coordinate of point 1
* @param y1 the y coordinate of point 1
* @param x2 the x coordinate of point 2
* @param y2 the y coordinate of point 2
* @return the distance from (x1,y1) to (x2,y2)
*/
static public double distance(double x1, double y1, double x2, double y2)
{
return Math.sqrt(distanceSq(X1, Y1, X2, Y2));
return Math.sqrt(distanceSq(x1, y1, x2, y2));
}
public double distanceSq (double PX, double PY)
/**
* Return the square of the distance from this point to the given one.
*
* @param x the x coordinate of the other point
* @param y the y coordinate of the other point
* @return the square of the distance
*/
public double distanceSq(double x, double y)
{
return distanceSq (getX(), PX, getY(), PY);
return distanceSq(getX(), x, getY(), y);
}
public double distance (double PX, double PY)
/**
* Return the square of the distance from this point to the given one.
*
* @param p the other point
* @return the square of the distance
* @throws NullPointerException if p is null
*/
public double distanceSq(Point2D p)
{
return distance (getX(), PX, getY(), PY);
return distanceSq(getX(), p.getX(), getY(), p.getY());
}
public double distanceSq (Point2D pt)
/**
* Return the distance from this point to the given one.
*
* @param x the x coordinate of the other point
* @param y the y coordinate of the other point
* @return the distance
*/
public double distance(double x, double y)
{
return distanceSq (getX(), pt.getX(), getY(), pt.getY());
return distance(getX(), x, getY(), y);
}
public double distance (Point2D pt)
/**
* Return the distance from this point to the given one.
*
* @param p the other point
* @return the distance
* @throws NullPointerException if p is null
*/
public double distance(Point2D p)
{
return distance (getX(), pt.getX(), getY(), pt.getY());
return distance(getX(), p.getX(), getY(), p.getY());
}
public int hashCode() { return (int) getX() ^ (int) getY(); }
/**
* Create a new point of the same run-time type with the same contents as
* this one.
*
* @return the clone
*/
public Object clone()
{
try
{
return super.clone ();
}
catch (CloneNotSupportedException _) {return null;}
{
return super.clone();
}
catch (CloneNotSupportedException e)
{
throw (Error) new InternalError().initCause(e); // Impossible
}
}
public boolean equals (Object o)
/**
* Return the hashcode for this point. The formula is not documented, but
* appears to be the same as:
* <pre>
* long l = Double.doubleToLongBits(getY());
* l = l * 31 ^ Double.doubleToLongBits(getX());
* return (int) ((l >> 32) ^ l);
* </pre>
*
* @return the hashcode
*/
public int hashCode()
{
// Talk about a fun time reverse engineering this one!
long l = java.lang.Double.doubleToLongBits(getY());
l = l * 31 ^ java.lang.Double.doubleToLongBits(getX());
return (int) ((l >> 32) ^ l);
}
/**
* Compares two points for equality. This returns true if they have the
* same coordinates.
*
* @param o the point to compare
* @return true if it is equal
*/
public boolean equals(Object o)
{
if (! (o instanceof Point2D))
return false;
Point2D p = (Point2D) o;
return getX () == p.getX () && getY () == p.getY ();
return getX() == p.getX() && getY() == p.getY();
}
/**
* This class defines a point in <code>double</code> precision.
*
* @author Eric Blake <ebb9@email.byu.edu>
* @since 1.2
* @status updated to 1.4
*/
public static class Double extends Point2D
{
/** The X coordinate. */
public double x;
/** The Y coordinate. */
public double y;
public Double ()
/**
* Create a new point at (0,0).
*/
public Double()
{
x = 0;
y = 0;
}
public Double (double x, double y)
/**
* Create a new point at (x,y).
*
* @param x the x coordinate
* @param y the y coordinate
*/
public Double(double x, double y)
{
this.x = x;
this.y = y;
}
public double getX ()
/**
* Return the x coordinate.
*
* @return the x coordinate
*/
public double getX()
{
return x;
}
public double getY ()
/**
* Return the y coordinate.
*
* @return the y coordinate
*/
public double getY()
{
return y;
}
public void setLocation (double x, double y)
/**
* Sets the location of this point.
*
* @param x the new x coordinate
* @param y the new y coordinate
*/
public void setLocation(double x, double y)
{
this.x = x;
this.y = y;
}
public String toString ()
/**
* Returns a string representation of this object. The format is:
* <code>"Point2D.Double[" + x + ", " + y + ']'</code>.
*
* @return a string representation of this object
*/
public String toString()
{
return "(" + x + ", " + y + ")";
return "Point2D.Double[" + x + ", " + y + ']';
}
}
} // class Double
/**
* This class defines a point in <code>float</code> precision.
*
* @author Eric Blake <ebb9@email.byu.edu>
* @since 1.2
* @status updated to 1.4
*/
public static class Float extends Point2D
{
/** The X coordinate. */
public float x;
/** The Y coordinate. */
public float y;
public Float ()
/**
* Create a new point at (0,0).
*/
public Float()
{
x = 0;
y = 0;
}
public Float (float x, float y)
/**
* Create a new point at (x,y).
*
* @param x the x coordinate
* @param y the y coordinate
*/
public Float(float x, float y)
{
this.x = x;
this.y = y;
}
public double getX ()
/**
* Return the x coordinate.
*
* @return the x coordinate
*/
public double getX()
{
return x;
}
public double getY ()
/**
* Return the y coordinate.
*
* @return the y coordinate
*/
public double getY()
{
return y;
}
public void setLocation (double x, double y)
/**
* Sets the location of this point.
*
* @param x the new x coordinate
* @param y the new y coordinate
*/
public void setLocation(double x, double y)
{
this.x = (float) x;
this.y = (float) y;
}
public void setLocation (float x, float y)
/**
* Sets the location of this point.
*
* @param x the new x coordinate
* @param y the new y coordinate
*/
public void setLocation(float x, float y)
{
this.x = x;
this.y = y;
}
public String toString ()
/**
* Returns a string representation of this object. The format is:
* <code>"Point2D.Float[" + x + ", " + y + ']'</code>.
*
* @return a string representation of this object
*/
public String toString()
{
return "(" + x + ", " + y + ")";
return "Point2D.Float[" + x + ", " + y + ']';
}
}
}
} // class Float
} // class Point2D