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

#ifndef __gnu_java_awt_peer_qt_QtScreenDevice__
#define __gnu_java_awt_peer_qt_QtScreenDevice__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace qt
          {
              class QtScreenDevice;
              class QtScreenDeviceConfiguration;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class DisplayMode;
        class GraphicsConfigTemplate;
        class GraphicsConfiguration;
        class Rectangle;
        class Window;
    }
  }
}

class gnu::java::awt::peer::qt::QtScreenDevice : public ::java::awt::GraphicsDevice
{

public:
  QtScreenDevice(jint);
  virtual void init(jint);
  virtual void dispose();
public: // actually package-private
  virtual ::java::awt::Rectangle * getBounds();
  virtual jint getDpiX();
  virtual jint getDpiY();
  virtual jint depth();
public:
  virtual ::java::awt::GraphicsConfiguration * getBestConfiguration(::java::awt::GraphicsConfigTemplate *);
  virtual JArray< ::java::awt::GraphicsConfiguration * > * getConfigurations();
  virtual ::java::awt::GraphicsConfiguration * getDefaultConfiguration();
  virtual ::java::lang::String * getIDstring();
  virtual jint getType();
  virtual jboolean isDisplayChangeSupported();
  virtual jboolean isFullScreenSupported();
  virtual void setDisplayMode(::java::awt::DisplayMode *);
  virtual void setFullScreenWindow(::java::awt::Window *);
private:
  jlong __attribute__((aligned(__alignof__( ::java::awt::GraphicsDevice)))) nativeObject;
  jint id;
  ::java::lang::String * IDstring;
public: // actually package-private
  ::gnu::java::awt::peer::qt::QtScreenDeviceConfiguration * config;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_qt_QtScreenDevice__
