summaryrefslogtreecommitdiffstats
path: root/libjava/java/awt/geom/RectangularShape.java
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-07-23 00:24:14 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-07-23 00:24:14 +0000
commit7b1c54e78d5e8067e1f8177ba83a698cb794ebb0 (patch)
tree015eb01267de18f0f0507f24597797582f311e45 /libjava/java/awt/geom/RectangularShape.java
parent9588521d18d4e00cb634ddd1d5d2e57be874dab5 (diff)
downloadppe42-gcc-7b1c54e78d5e8067e1f8177ba83a698cb794ebb0.tar.gz
ppe42-gcc-7b1c54e78d5e8067e1f8177ba83a698cb794ebb0.zip
* Makefile.in: Rebuilt.
* Makefile.am (awt_java_source_files): Updated for new files. * java/awt/Adjustable.java (HORIZONTAL, VERTICAL): Set values. * java/awt/Label.java: New file. * java/awt/Rectangle.java (Rectangle): Extend Rectangle2D. (createIntersection, createUnion, getBounds2D): New methods. * java/awt/Scrollbar.java: New file. * java/awt/Shape.java: Updated to 1.2. * java/awt/geom/AffineTransform.java: New file. * java/awt/geom/Ellipse2D.java: New file. * java/awt/geom/NoninvertibleTransformException.java: New file. * java/awt/geom/PathIterator.java: New file. * java/awt/geom/Rectangle2D.java: New file. * java/awt/geom/RectangularShape.java: New file. * java/awt/geom/Point2D.java (Double, Float): New inner classes. * java/awt/geom/IllegalPathStateException.java: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35195 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/awt/geom/RectangularShape.java')
-rw-r--r--libjava/java/awt/geom/RectangularShape.java293
1 files changed, 293 insertions, 0 deletions
diff --git a/libjava/java/awt/geom/RectangularShape.java b/libjava/java/awt/geom/RectangularShape.java
new file mode 100644
index 00000000000..b581c63525b
--- /dev/null
+++ b/libjava/java/awt/geom/RectangularShape.java
@@ -0,0 +1,293 @@
+/* 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;
+import java.awt.*;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * @author Tom Tromey <tromey@cygnus.com>
+ * @date April 16, 2000
+ */
+
+public abstract class RectangularShape implements Shape, Cloneable
+{
+ protected RectangularShape ()
+ {
+ }
+
+ public abstract double getX ();
+ public abstract double getY ();
+ public abstract double getWidth ();
+ public abstract double getHeight ();
+
+ public double getMinX ()
+ {
+ return Math.min (getX (), getX () + getWidth ());
+ }
+
+ public double getMinY ()
+ {
+ return Math.min (getY (), getY () + getHeight ());
+ }
+
+ public double getMaxX ()
+ {
+ return Math.max (getX (), getX () + getWidth ());
+ }
+
+ public double getMaxY ()
+ {
+ return Math.max (getY (), getY () + getHeight ());
+ }
+
+ public double getCenterX ()
+ {
+ return getX () + getWidth () / 2;
+ }
+
+ public double getCenterY ()
+ {
+ return getY () + getHeight () / 2;
+ }
+
+ public Rectangle2D getFrame ()
+ {
+ return new Rectangle2D.Double (getX (), getY (),
+ getWidth (), getHeight ());
+ }
+
+ public abstract boolean isEmpty ();
+ public abstract void setFrame (double x, double y, double w, double h);
+
+ public void setFrame (Point2D loc, Dimension2D size)
+ {
+ setFrame (loc.getX (), loc.getY (), size.getWidth (), size.getHeight ());
+ }
+
+ public void setFrame (Rectangle2D r)
+ {
+ setFrame (r.getX (), r.getY (), r.getWidth (), r.getHeight ());
+ }
+
+ public void setFrameFromDiagonal (double x1, double y1,
+ double x2, double y2)
+ {
+ if (x1 > x2)
+ {
+ double t = x2;
+ x2 = x1;
+ x1 = t;
+ }
+ if (y1 > y2)
+ {
+ double t = y2;
+ y2 = y1;
+ y1 = t;
+ }
+ setFrame (x1, y1, x2 - x1, y2 - y1);
+ }
+
+ public void setFrameFromDiagonal (Point2D p1, Point2D p2)
+ {
+ setFrameFromDiagonal (p1.getX (), p1.getY (),
+ p2.getX (), p2.getY ());
+ }
+
+ public void setFrameFromCenter (double centerX, double centerY,
+ double cornerX, double cornerY)
+ {
+ double halfw = Math.abs (cornerX - centerX);
+ double halfh = Math.abs (cornerY - centerY);
+ setFrame (centerX - halfw, centerY - halfh,
+ 2 * halfw, 2 * halfh);
+ }
+
+ public void setFrameFromCenter (Point2D center, Point2D corner)
+ {
+ setFrameFromCenter (center.getX (), center.getY (),
+ corner.getX (), corner.getY ());
+ }
+
+ public boolean contains (Point2D p)
+ {
+ double x = p.getX ();
+ double y = p.getY ();
+ double rx = getX ();
+ double ry = getY ();
+ double w = getWidth ();
+ double h = getHeight ();
+ return x >= rx && x < rx + w && y >= ry && y < ry + h;
+ }
+
+ public boolean intersects (Rectangle2D r)
+ {
+ double x = getX ();
+ double w = getWidth ();
+ double mx = r.getX ();
+ double mw = r.getWidth ();
+ if (x < mx || x >= mx + mw || x + w < mx || x + w >= mx + mw)
+ return false;
+ double y = getY ();
+ double h = getHeight ();
+ double my = r.getY ();
+ double mh = r.getHeight ();
+ return y >= my && y < my + mh && y + h >= my && y + h < my + mh;
+ }
+
+ private boolean containsPoint (double x, double y)
+ {
+ double mx = getX ();
+ double mw = getWidth ();
+ if (x < mx || x >= mx + mw)
+ return false;
+ double my = getY ();
+ double mh = getHeight ();
+ return y >= my && y < my + mh;
+ }
+
+ public boolean contains (Rectangle2D r)
+ {
+ return (containsPoint (r.getMinX (), r.getMinY ())
+ && containsPoint (r.getMaxX (), r.getMaxY ()));
+ }
+
+ public Rectangle getBounds ()
+ {
+ return new Rectangle ((int) getX (), (int) getY (),
+ (int) getWidth (), (int) getHeight ());
+ }
+
+ public PathIterator getPathIterator (AffineTransform at, double flatness)
+ {
+ // FIXME
+ // return new AffineTransform.Iterator (new Iterator ());
+ return null;
+ }
+
+ public Object clone ()
+ {
+ return super.clone ();
+ }
+
+ // This implements the PathIterator for all RectangularShape objects
+ // that don't override getPathIterator.
+ private class Iterator implements PathIterator
+ {
+ // Our current coordinate.
+ private int coord;
+
+ private static final int START = 0;
+ private static final int END_PLUS_ONE = 5;
+
+ public Iterator ()
+ {
+ coord = START;
+ }
+
+ public int currentSegment (double[] coords)
+ {
+ int r;
+ switch (coord)
+ {
+ case 0:
+ coords[0] = getX ();
+ coords[1] = getY ();
+ r = SEG_MOVETO;
+ break;
+
+ case 1:
+ coords[0] = getX () + getWidth ();
+ coords[1] = getY ();
+ r = SEG_LINETO;
+ break;
+
+ case 2:
+ coords[0] = getX () + getWidth ();
+ coords[1] = getY () + getHeight ();
+ r = SEG_LINETO;
+ break;
+
+ case 3:
+ coords[0] = getX ();
+ coords[1] = getY () + getHeight ();
+ r = SEG_LINETO;
+ break;
+
+ case 4:
+ r = SEG_CLOSE;
+ break;
+
+ default:
+ // It isn't clear what to do if the caller calls us after
+ // isDone returns true.
+ r = SEG_CLOSE;
+ break;
+ }
+
+ return r;
+ }
+
+ public int currentSegment (float[] coords)
+ {
+ int r;
+ switch (coord)
+ {
+ case 0:
+ coords[0] = (float) getX ();
+ coords[1] = (float) getY ();
+ r = SEG_MOVETO;
+ break;
+
+ case 1:
+ coords[0] = (float) (getX () + getWidth ());
+ coords[1] = (float) getY ();
+ r = SEG_LINETO;
+ break;
+
+ case 2:
+ coords[0] = (float) (getX () + getWidth ());
+ coords[1] = (float) (getY () + getHeight ());
+ r = SEG_LINETO;
+ break;
+
+ case 3:
+ coords[0] = (float) getX ();
+ coords[1] = (float) (getY () + getHeight ());
+ r = SEG_LINETO;
+ break;
+
+ case 4:
+ default:
+ // It isn't clear what to do if the caller calls us after
+ // isDone returns true. We elect to keep returning
+ // SEG_CLOSE.
+ r = SEG_CLOSE;
+ break;
+ }
+
+ return r;
+ }
+
+ public int getWindingRule ()
+ {
+ return WIND_NON_ZERO;
+ }
+
+ public boolean isDone ()
+ {
+ return coord == END_PLUS_ONE;
+ }
+
+ public void next ()
+ {
+ if (coord < END_PLUS_ONE)
+ ++coord;
+ }
+ }
+}
OpenPOWER on IntegriCloud