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

#ifndef __java_awt_print_Paper__
#define __java_awt_print_Paper__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace print
      {
          class Paper;
      }
    }
  }
}

class java::awt::print::Paper : public ::java::lang::Object
{

public:
  Paper();
  virtual jdouble getHeight();
  virtual jdouble getWidth();
  virtual jdouble getImageableX();
  virtual jdouble getImageableY();
  virtual jdouble getImageableWidth();
  virtual jdouble getImageableHeight();
  virtual void setSize(jdouble, jdouble);
  virtual void setImageableArea(jdouble, jdouble, jdouble, jdouble);
  virtual ::java::lang::Object * clone();
private:
  jdouble __attribute__((aligned(__alignof__( ::java::lang::Object)))) height;
  jdouble width;
  jdouble imageableX;
  jdouble imageableY;
  jdouble imageableWidth;
  jdouble imageableHeight;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_print_Paper__
