aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2000-12-03 21:21:52 +0000
committerTom Tromey <tromey@gcc.gnu.org>2000-12-03 21:21:52 +0000
commitf933fd92862f3cfb8c5e35580ab201df50c0401b (patch)
treeb2a7d7cb5f0523df88fb745ce10aa0d6783b5544 /libjava
parent5c032c4d313a81edc57e95fc5b260fa4022d7f46 (diff)
downloadgcc-f933fd92862f3cfb8c5e35580ab201df50c0401b.zip
gcc-f933fd92862f3cfb8c5e35580ab201df50c0401b.tar.gz
gcc-f933fd92862f3cfb8c5e35580ab201df50c0401b.tar.bz2
Makefile.in: Rebuilt.
* Makefile.in: Rebuilt. * Makefile.am (awt_java_source_files): Added new file. * java/awt/geom/RoundRectangle2D.java: New file. From-SVN: r37980
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog4
-rw-r--r--libjava/Makefile.am1
-rw-r--r--libjava/Makefile.in2
-rw-r--r--libjava/java/awt/geom/RoundRectangle2D.java345
4 files changed, 352 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index e13b8ad..d144635 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -2,6 +2,10 @@
* Makefile.in: Rebuilt.
* Makefile.am (awt_java_source_files): Added new file.
+ * java/awt/geom/RoundRectangle2D.java: New file.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (awt_java_source_files): Added new file.
* java/awt/FlowLayout.java: New file.
* Makefile.in: Rebuilt.
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index 6c2681f..c618f32 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -674,6 +674,7 @@ java/awt/geom/PathIterator.java \
java/awt/geom/Point2D.java \
java/awt/geom/Rectangle2D.java \
java/awt/geom/RectangularShape.java \
+java/awt/geom/RoundRectangle2D.java \
java/awt/image/BufferedImage.java \
java/awt/image/ColorModel.java \
java/awt/image/ComponentColorModel.java \
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index 46d8942..f2426fa 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -445,6 +445,7 @@ java/awt/geom/PathIterator.java \
java/awt/geom/Point2D.java \
java/awt/geom/Rectangle2D.java \
java/awt/geom/RectangularShape.java \
+java/awt/geom/RoundRectangle2D.java \
java/awt/image/BufferedImage.java \
java/awt/image/ColorModel.java \
java/awt/image/ComponentColorModel.java \
@@ -1385,6 +1386,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/geom/PathIterator.P .deps/java/awt/geom/Point2D.P \
.deps/java/awt/geom/Rectangle2D.P \
.deps/java/awt/geom/RectangularShape.P \
+.deps/java/awt/geom/RoundRectangle2D.P \
.deps/java/awt/image/BufferedImage.P .deps/java/awt/image/ColorModel.P \
.deps/java/awt/image/ComponentColorModel.P \
.deps/java/awt/image/ComponentSampleModel.P \
diff --git a/libjava/java/awt/geom/RoundRectangle2D.java b/libjava/java/awt/geom/RoundRectangle2D.java
new file mode 100644
index 0000000..f90d342
--- /dev/null
+++ b/libjava/java/awt/geom/RoundRectangle2D.java
@@ -0,0 +1,345 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libjava.
+
+This software is copyrighted work licensed under the terms of the
+Libjava License. Please consult the file "LIBJAVA_LICENSE" for
+details. */
+
+package java.awt.geom;
+
+/** This class implements a rectangle with rounded corners.
+ * @author Tom Tromey <tromey@cygnus.com>
+ * @date December 3, 2000
+ */
+public abstract class RoundRectangle2D extends RectangularShape
+{
+ /** Return the arc height of this round rectangle. */
+ public abstract double getArcHeight ();
+
+ /** Return the arc width of this round rectangle. */
+ public abstract double getArcWidth ();
+
+ /** Set the values of this round rectangle
+ * @param x The x coordinate
+ * @param y The y coordinate
+ * @param w The width
+ * @param h The height
+ * @param arcWidth The arc width
+ * @param arcHeight The arc height
+ */
+ public abstract void setRoundRect (double x, double y, double w, double h,
+ double arcWidth, double arcHeight);
+
+ /** Create a RoundRectangle2D. This is protected because this class
+ * is abstract and cannot be instantiated.
+ */
+ protected RoundRectangle2D ()
+ {
+ }
+
+ /** Return true if this object contains the specified point.
+ * @param x The x coordinate
+ * @param y The y coordinate
+ */
+ public boolean contains (double x, double y)
+ {
+ double mx = getX ();
+ double mw = getWidth ();
+ if (x < mx || x >= mx + mw)
+ return false;
+ double my = getY ();
+ double mh = getHeight ();
+ if (y < my || y >= my + mh)
+ return false;
+
+ // Now check to see if the point is in range of an arc.
+ double dy = Math.min (Math.abs (my - y), Math.abs (my + mh - y));
+ double dx = Math.min (Math.abs (mx - x), Math.abs (mx + mw - x));
+ double aw = getArcWidth ();
+ double ah = getArcHeight ();
+ if (dx > aw || dy > ah)
+ return true;
+
+ // At this point DX represents the distance from the nearest edge
+ // of the rectangle. But we want to transform it to represent the
+ // scaled distance from the center of the ellipse that forms the
+ // arc. Hence this code:
+ dy = (ah - dy) / ah;
+ dx = (aw - dx) / aw;
+
+ return dx * dx + dy * dy <= 1.0;
+ }
+
+ /** Return true if this object contains the specified rectangle
+ * @param x The x coordinate
+ * @param y The y coordinate
+ * @param w The width
+ * @param h The height
+ */
+ public boolean contains (double x, double y, double w, double h)
+ {
+ // We have to check all four points here (for ordinary rectangles
+ // we can just check opposing corners).
+ return (contains (x, y) && contains (x + w, h)
+ && contains (x, y + h) && contains (x + w, y + h));
+ }
+
+ /** Return a new path iterator which iterates over this rectangle.
+ * @param at An affine transform to apply to the object
+ */
+ public PathIterator getPathIterator (AffineTransform at)
+ {
+ // FIXME.
+ return null;
+ }
+
+ /** Return true if the given rectangle intersects this shape.
+ * @param x The x coordinate
+ * @param y The y coordinate
+ * @param w The width
+ * @param h The height
+ */
+ public boolean intersects (double x, double y, double w, double h)
+ {
+ // Here we can use the same code we use for an ordinary rectangle.
+ double mx = getX ();
+ double mw = getWidth ();
+ if (x < mx || x >= mx + mw || x + w < mx || x + w >= mx + mw)
+ return false;
+ double my = getY ();
+ double mh = getHeight ();
+ return y >= my && y < my + mh && y + h >= my && y + h < my + mh;
+ }
+
+ /** Set the boundary of this round rectangle.
+ * @param x The x coordinate
+ * @param y The y coordinate
+ * @param w The width
+ * @param h The height
+ */
+ public void setFrame (double x, double y, double w, double h)
+ {
+ // This is a bit lame.
+ setRoundRect (x, y, w, h, getArcWidth (), getArcHeight ());
+ }
+
+ /** Set the values of this round rectangle to be the same as those
+ * of the argument.
+ * @param rr The round rectangle to copy
+ */
+ public void setRoundRect (RoundRectangle2D rr)
+ {
+ setRoundRect (rr.getX (), rr.getY (), rr.getWidth (), rr.getHeight (),
+ rr.getArcWidth (), rr.getArcHeight ());
+ }
+
+ /** A subclass of RoundRectangle which keeps its parameters as
+ * floats. */
+ public static class Float extends RoundRectangle2D
+ {
+ /** The height of the corner arc. */
+ public float archeight;
+
+ /** The width of the corner arc. */
+ public float arcwidth;
+
+ /** The x coordinate of this object. */
+ public float x;
+
+ /** The y coordinate of this object. */
+ public float y;
+
+ /** The width of this object. */
+ public float width;
+
+ /** The height of this object. */
+ public float height;
+
+ /** Construct a new instance, with all parameters set to 0. */
+ public Float ()
+ {
+ this (0, 0, 0, 0, 0, 0);
+ }
+
+ /** Construct a new instance with the given arguments.
+ * @param x The x coordinate
+ * @param y The y coordinate
+ * @param w The width
+ * @param h The height
+ * @param arcWidth The arc width
+ * @param arcHeight The arc height
+ */
+ public Float (float x, float y, float w, float h,
+ float arcWidth, float arcHeight)
+ {
+ this.x = x;
+ this.y = y;
+ this.width = w;
+ this.height = h;
+ this.arcwidth = arcWidth;
+ this.archeight = arcHeight;
+ }
+
+ public double getArcHeight ()
+ {
+ return archeight;
+ }
+
+ public double getArcWidth ()
+ {
+ return arcwidth;
+ }
+
+ public Rectangle2D getBounds2D ()
+ {
+ return new Rectangle2D.Float (x, y, width, height);
+ }
+
+ public double getX ()
+ {
+ return x;
+ }
+
+ public double getY ()
+ {
+ return y;
+ }
+
+ public double getWidth ()
+ {
+ return width;
+ }
+
+ public double getHeight ()
+ {
+ return height;
+ }
+
+ public boolean isEmpty ()
+ {
+ return width <= 0 || height <= 0;
+ }
+
+ public void setRoundRect (float x, float y, float w, float h,
+ float arcWidth, float arcHeight)
+ {
+ this.x = x;
+ this.y = y;
+ this.width = w;
+ this.height = h;
+ this.arcwidth = arcWidth;
+ this.archeight = arcHeight;
+ }
+
+ public void setRoundRect (double x, double y, double w, double h,
+ double arcWidth, double arcHeight)
+ {
+ this.x = (float) x;
+ this.y = (float) y;
+ this.width = (float) w;
+ this.height = (float) h;
+ this.arcwidth = (float) arcWidth;
+ this.archeight = (float) arcHeight;
+ }
+ }
+
+ /** A subclass of RoundRectangle which keeps its parameters as
+ * doubles. */
+ public static class Double extends RoundRectangle2D
+ {
+ /** The height of the corner arc. */
+ public double archeight;
+
+ /** The width of the corner arc. */
+ public double arcwidth;
+
+ /** The x coordinate of this object. */
+ public double x;
+
+ /** The y coordinate of this object. */
+ public double y;
+
+ /** The width of this object. */
+ public double width;
+
+ /** The height of this object. */
+ public double height;
+
+ /** Construct a new instance, with all parameters set to 0. */
+ public Double ()
+ {
+ this (0, 0, 0, 0, 0, 0);
+ }
+
+ /** Construct a new instance with the given arguments.
+ * @param x The x coordinate
+ * @param y The y coordinate
+ * @param w The width
+ * @param h The height
+ * @param arcWidth The arc width
+ * @param arcHeight The arc height
+ */
+ public Double (double x, double y, double w, double h,
+ double arcWidth, double arcHeight)
+ {
+ this.x = x;
+ this.y = y;
+ this.width = w;
+ this.height = h;
+ this.arcwidth = arcWidth;
+ this.archeight = arcHeight;
+ }
+
+ public double getArcHeight ()
+ {
+ return archeight;
+ }
+
+ public double getArcWidth ()
+ {
+ return arcwidth;
+ }
+
+ public Rectangle2D getBounds2D ()
+ {
+ return new Rectangle2D.Double (x, y, width, height);
+ }
+
+ public double getX ()
+ {
+ return x;
+ }
+
+ public double getY ()
+ {
+ return y;
+ }
+
+ public double getWidth ()
+ {
+ return width;
+ }
+
+ public double getHeight ()
+ {
+ return height;
+ }
+
+ public boolean isEmpty ()
+ {
+ return width <= 0 || height <= 0;
+ }
+
+ public void setRoundRect (double x, double y, double w, double h,
+ double arcWidth, double arcHeight)
+ {
+ this.x = x;
+ this.y = y;
+ this.width = w;
+ this.height = h;
+ this.arcwidth = arcWidth;
+ this.archeight = arcHeight;
+ }
+ }
+}