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

#ifndef __java_awt_geom_Line2D$Float__
#define __java_awt_geom_Line2D$Float__

#pragma interface

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

class java::awt::geom::Line2D$Float : public ::java::awt::geom::Line2D
{

public:
  Line2D$Float();
  Line2D$Float(jfloat, jfloat, jfloat, jfloat);
  Line2D$Float(::java::awt::geom::Point2D *, ::java::awt::geom::Point2D *);
  virtual jdouble getX1();
  virtual jdouble getY1();
  virtual ::java::awt::geom::Point2D * getP1();
  virtual jdouble getX2();
  virtual jdouble getY2();
  virtual ::java::awt::geom::Point2D * getP2();
  virtual void setLine(jdouble, jdouble, jdouble, jdouble);
  virtual void setLine(jfloat, jfloat, jfloat, jfloat);
  virtual ::java::awt::geom::Rectangle2D * getBounds2D();
  jfloat __attribute__((aligned(__alignof__( ::java::awt::geom::Line2D)))) x1;
  jfloat y1;
  jfloat x2;
  jfloat y2;
  static ::java::lang::Class class$;
};

#endif // __java_awt_geom_Line2D$Float__
