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

#ifndef __gnu_java_awt_peer_headless_HeadlessGraphicsEnvironment__
#define __gnu_java_awt_peer_headless_HeadlessGraphicsEnvironment__

#pragma interface

#include <java/awt/GraphicsEnvironment.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace headless
          {
              class HeadlessGraphicsEnvironment;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class Font;
        class Graphics2D;
        class GraphicsDevice;
      namespace image
      {
          class BufferedImage;
      }
    }
  }
}

class gnu::java::awt::peer::headless::HeadlessGraphicsEnvironment : public ::java::awt::GraphicsEnvironment
{

public:
  HeadlessGraphicsEnvironment();
  virtual ::java::awt::Graphics2D * createGraphics(::java::awt::image::BufferedImage *);
  virtual JArray< ::java::awt::Font * > * getAllFonts();
  virtual JArray< ::java::lang::String * > * getAvailableFontFamilyNames();
  virtual JArray< ::java::lang::String * > * getAvailableFontFamilyNames(::java::util::Locale *);
  virtual ::java::awt::GraphicsDevice * getDefaultScreenDevice();
  virtual JArray< ::java::awt::GraphicsDevice * > * getScreenDevices();
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_headless_HeadlessGraphicsEnvironment__
