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

#ifndef __java_awt_geom_RoundRectangle2D$Double__
#define __java_awt_geom_RoundRectangle2D$Double__

#pragma interface

#include <java/awt/geom/RoundRectangle2D.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace geom
      {
          class Rectangle2D;
          class RoundRectangle2D$Double;
      }
    }
  }
}

class java::awt::geom::RoundRectangle2D$Double : public ::java::awt::geom::RoundRectangle2D
{

public:
  RoundRectangle2D$Double();
  RoundRectangle2D$Double(jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
  virtual jdouble getArcHeight();
  virtual jdouble getArcWidth();
  virtual ::java::awt::geom::Rectangle2D * getBounds2D();
  virtual jdouble getX();
  virtual jdouble getY();
  virtual jdouble getWidth();
  virtual jdouble getHeight();
  virtual jboolean isEmpty();
  virtual void setRoundRect(jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
  jdouble __attribute__((aligned(__alignof__( ::java::awt::geom::RoundRectangle2D)))) archeight;
  jdouble arcwidth;
  jdouble x;
  jdouble y;
  jdouble width;
  jdouble height;
  static ::java::lang::Class class$;
};

#endif // __java_awt_geom_RoundRectangle2D$Double__
