
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_awt_Rectangle__
#define __java_awt_Rectangle__

#pragma interface

#include <java/awt/geom/Rectangle2D.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Dimension;
        class Point;
        class Rectangle;
      namespace geom
      {
          class Rectangle2D;
      }
    }
  }
}

class java::awt::Rectangle : public ::java::awt::geom::Rectangle2D
{

public:
  Rectangle();
  Rectangle(::java::awt::Rectangle *);
  Rectangle(jint, jint, jint, jint);
  Rectangle(jint, jint);
  Rectangle(::java::awt::Point *, ::java::awt::Dimension *);
  Rectangle(::java::awt::Point *);
  Rectangle(::java::awt::Dimension *);
  virtual jdouble getX();
  virtual jdouble getY();
  virtual jdouble getWidth();
  virtual jdouble getHeight();
  virtual ::java::awt::Rectangle * getBounds();
  virtual ::java::awt::geom::Rectangle2D * getBounds2D();
  virtual void setBounds(::java::awt::Rectangle *);
  virtual void setBounds(jint, jint, jint, jint);
  virtual void setRect(jdouble, jdouble, jdouble, jdouble);
  virtual void reshape(jint, jint, jint, jint);
  virtual ::java::awt::Point * getLocation();
  virtual void setLocation(::java::awt::Point *);
  virtual void setLocation(jint, jint);
  virtual void move(jint, jint);
  virtual void translate(jint, jint);
  virtual ::java::awt::Dimension * getSize();
  virtual void setSize(::java::awt::Dimension *);
  virtual void setSize(jint, jint);
  virtual void resize(jint, jint);
  virtual jboolean contains(::java::awt::Point *);
  virtual jboolean contains(jint, jint);
  virtual jboolean contains(::java::awt::Rectangle *);
  virtual jboolean contains(jint, jint, jint, jint);
  virtual jboolean inside(jint, jint);
  virtual jboolean intersects(::java::awt::Rectangle *);
  virtual ::java::awt::Rectangle * intersection(::java::awt::Rectangle *);
  virtual ::java::awt::Rectangle * union$(::java::awt::Rectangle *);
  virtual void add(jint, jint);
  virtual void add(::java::awt::Point *);
  virtual void add(::java::awt::Rectangle *);
  virtual void grow(jint, jint);
  virtual jboolean isEmpty();
  virtual jint outcode(jdouble, jdouble);
  virtual ::java::awt::geom::Rectangle2D * createIntersection(::java::awt::geom::Rectangle2D *);
  virtual ::java::awt::geom::Rectangle2D * createUnion(::java::awt::geom::Rectangle2D *);
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * toString();
private:
  static const jlong serialVersionUID = -4345857070255674764LL;
public:
  jint __attribute__((aligned(__alignof__( ::java::awt::geom::Rectangle2D)))) x;
  jint y;
  jint width;
  jint height;
  static ::java::lang::Class class$;
};

#endif // __java_awt_Rectangle__
