#ifndef QGL_H
#define QGL_H 
#include <QtGui/qwidget.h>
#include <QtOpenGL/qglcolormap.h>
#include <QtCore/qmap.h>
typedef enum QtValidLicenseForOpenGLModule QtOpenGLModule;
#if defined(Q_WS_MAC)
#elif defined(Q_WS_QWS)
#else
#include <GL/gl.h>
#include <GL/glu.h>
#endif
#if defined(Q_WS_X11)
struct QGLOverlayWidget;
#endif
struct QGLContextPrivate;
namespace QGL{
   enum FormatOption{
      DoubleBuffer = 1,
      DepthBuffer = 2,
      Rgba = 4,
      AlphaChannel = 8,
      AccumBuffer = 16,
      StencilBuffer = 32,
      StereoBuffers = 64,
      DirectRendering = 128,
      HasOverlay = 256,
      SampleBuffers = 512,
      SingleBuffer = 65536,
      NoDepthBuffer = 131072,
      ColorIndex = 262144,
      NoAlphaChannel = 524288,
      NoAccumBuffer = 1048576,
      NoStencilBuffer = 2097152,
      NoStereoBuffers = 4194304,
      IndirectRendering = 8388608,
      NoOverlay = 16777216,
      NoSampleBuffers = 33554432,
   };
   typedef class QFlags < enum QGL::FormatOption > FormatOptions;
};
inline class QFlags < enum QGL::FormatOption > operator |(enum QGL::FormatOption f1, class QFlags < enum QGL::FormatOption > f2);
inline class QFlags < enum QGL::FormatOption > operator |(enum QGL::FormatOption f1, enum QGL::FormatOption f2);
struct QGLFormatPrivate;
class QGLFormat{
   public: QGLFormat();
   public: QGLFormat(QGL::FormatOptions options, int plane = 0);
   public: QGLFormat(class QGLFormat const & other);
   public: class QGLFormat& operator =(class QGLFormat const & other);
   public: ~QGLFormat();
   public: void setDepthBufferSize(int size);
   public: int depthBufferSize() const
   public: void setAccumBufferSize(int size);
   public: int accumBufferSize() const
   public: void setRedBufferSize(int size);
   public: int redBufferSize() const
   public: void setGreenBufferSize(int size);
   public: int greenBufferSize() const
   public: void setBlueBufferSize(int size);
   public: int blueBufferSize() const
   public: void setAlphaBufferSize(int size);
   public: int alphaBufferSize() const
   public: void setStencilBufferSize(int size);
   public: int stencilBufferSize() const
   public: void setSampleBuffers(bool enable);
   public: void setSamples(int numSamples);
   public: int samples() const
   public: void setSwapInterval(int interval);
   public: int swapInterval() const
   public: void setDoubleBuffer(bool enable);
   public: void setDepth(bool enable);
   public: void setRgba(bool enable);
   public: void setAlpha(bool enable);
   public: void setAccum(bool enable);
   public: void setStencil(bool enable);
   public: void setStereo(bool enable);
   public: void setDirectRendering(bool enable);
   public: void setOverlay(bool enable);
   public: int plane() const
   public: void setPlane(int plane);
   public: void setOption(QGL::FormatOptions opt);
   public: bool testOption(QGL::FormatOptions opt) const
   public: static class QGLFormat defaultFormat();
   public: static void setDefaultFormat(class QGLFormat const & f);
   public: static class QGLFormat defaultOverlayFormat();
   public: static void setDefaultOverlayFormat(class QGLFormat const & f);
   public: static bool hasOpenGL();
   public: static bool hasOpenGLOverlays();
   public: enum OpenGLVersionFlag{
      OpenGL_Version_None = 0,
      OpenGL_Version_1_1 = 1,
      OpenGL_Version_1_2 = 2,
      OpenGL_Version_1_3 = 4,
      OpenGL_Version_1_4 = 8,
      OpenGL_Version_1_5 = 16,
      OpenGL_Version_2_0 = 32,
      OpenGL_Version_2_1 = 64,
      OpenGL_ES_Common_Version_1_0 = 128,
      OpenGL_ES_CommonLite_Version_1_0 = 256,
      OpenGL_ES_Common_Version_1_1 = 512,
      OpenGL_ES_CommonLite_Version_1_1 = 1024,
      OpenGL_ES_Version_2_0 = 2048,
   };
   public: typedef class QFlags < enum QGLFormat::OpenGLVersionFlag > OpenGLVersionFlags;
   public: static class QFlags < enum QGLFormat::OpenGLVersionFlag > openGLVersionFlags();
   private: struct QGLFormatPrivate* d;
   public: inline bool doubleBuffer() const
   public: inline bool depth() const
   public: inline bool rgba() const
   public: inline bool alpha() const
   public: inline bool accum() const
   public: inline bool stencil() const
   public: inline bool stereo() const
   public: inline bool directRendering() const
   public: inline bool hasOverlay() const
   public: inline bool sampleBuffers() const
   friend bool operator ==(class QGLFormat const &, class QGLFormat const &);
   friend bool operator !=(class QGLFormat const &, class QGLFormat const &);
};
inline class QFlags < enum QGLFormat::OpenGLVersionFlag > operator |(enum QGLFormat::OpenGLVersionFlag f1, class QFlags < enum QGLFormat::OpenGLVersionFlag > f2);
inline class QFlags < enum QGLFormat::OpenGLVersionFlag > operator |(enum QGLFormat::OpenGLVersionFlag f1, enum QGLFormat::OpenGLVersionFlag f2);
bool operator ==(class QGLFormat const &, class QGLFormat const &);
bool operator !=(class QGLFormat const &, class QGLFormat const &);
class QGLContext{
   private: inline struct QGLContextPrivate* d_func();
   private: inline struct QGLContextPrivate const * d_func() const
   public: QGLContext(class QGLFormat const & format, class QPaintDevice* device);
   public: QGLContext(class QGLFormat const & format);
   public: virtual ~QGLContext();
   public: virtual bool create(class QGLContext const * shareContext = 0);
   public: bool isValid() const
   public: bool isSharing() const
   public: void reset();
   public: class QGLFormat format() const
   public: class QGLFormat requestedFormat() const
   public: void setFormat(class QGLFormat const & format);
   public: virtual void makeCurrent();
   public: virtual void doneCurrent();
   public: virtual void swapBuffers() const
   public: GLuint bindTexture(class QImage const & image, GLenum target = 3553, GLint format = 6408);
   public: GLuint bindTexture(class QPixmap const & pixmap, GLenum target = 3553, GLint format = 6408);
   public: GLuint bindTexture(class QString const & fileName);
   public: void deleteTexture(GLuint tx_id);
   public: static void setTextureCacheLimit(int size);
   public: static int textureCacheLimit();
   public: void* getProcAddress(class QString const & proc) const
   public: class QPaintDevice* device() const
   public: class QColor overlayTransparentColor() const
   public: static class QGLContext const * currentContext();
   protected: virtual bool chooseContext(class QGLContext const * shareContext = 0);
#if defined(Q_WS_X11)
   protected: virtual void* tryVisual(class QGLFormat const & f, int bufDepth = 1);
   protected: virtual void* chooseVisual();
#endif
   protected: bool deviceIsPixmap() const
   protected: bool windowCreated() const
   protected: void setWindowCreated(bool on);
   protected: bool initialized() const
   protected: void setInitialized(bool on);
   protected: void generateFontDisplayLists(class QFont const & fnt, int listBase);
   protected: uint colorIndex(class QColor const & c) const
   protected: void setValid(bool valid);
   protected: void setDevice(class QPaintDevice* pDev);
   protected: static class QGLContext* currentCtx;
   private: struct QGLContextPrivate* d_ptr;
   private: QGLContext(QGLContext&);
   private: class QGLContext& operator =(QGLContext&);
   friend struct QGLContextPrivate;
   friend struct QGLPixelBuffer;
   friend struct QGLPixelBufferPrivate;
   friend class QGLWidget;
   friend struct QGLDrawable;
   friend struct QGLWidgetPrivate;
   friend struct QGLGlyphCache;
   friend struct QOpenGLPaintEngine;
   friend struct QOpenGLPaintEnginePrivate;
};
struct QGLPixelBuffer;
struct QGLPixelBufferPrivate;
struct QGLDrawable;
struct QGLGlyphCache;
struct QOpenGLPaintEngine;
struct QOpenGLPaintEnginePrivate;
class QGLWidget: public QWidget{
   public: virtual struct QMetaObject const * metaObject() const
   public: static struct QMetaObject const staticMetaObject;
   public: virtual void* qt_metacast(char const *);
   public: static inline class QString tr(char const * s, char const * c = 0);
   public: static inline class QString trUtf8(char const * s, char const * c = 0);
   public: static inline class QString tr(char const * s, char const * c, int n);
   public: static inline class QString trUtf8(char const * s, char const * c, int n);
   public: virtual int qt_metacall(enum QMetaObject::Call, int, void* *);
   private: inline struct QGLWidgetPrivate* d_func();
   private: inline struct QGLWidgetPrivate const * d_func() const
   public: explicit QGLWidget(class QWidget* parent = 0, class QGLWidget const * shareWidget = 0, Qt::WindowFlags f = 0);
   public: explicit QGLWidget(class QGLContext* context, class QWidget* parent = 0, class QGLWidget const * shareWidget = 0, Qt::WindowFlags f = 0);
   public: explicit QGLWidget(class QGLFormat const & format, class QWidget* parent = 0, class QGLWidget const * shareWidget = 0, Qt::WindowFlags f = 0);
   public: virtual ~QGLWidget();
   public: void qglColor(class QColor const & c) const
   public: void qglClearColor(class QColor const & c) const
   public: bool isValid() const
   public: bool isSharing() const
   public: void makeCurrent();
   public: void doneCurrent();
   public: bool doubleBuffer() const
   public: void swapBuffers();
   public: class QGLFormat format() const
   public: void setFormat(class QGLFormat const & format);
   public: class QGLContext const * context() const
   public: void setContext(class QGLContext* context, class QGLContext const * shareContext = 0, bool deleteOldContext = 1);
   public: class QPixmap renderPixmap(int w = 0, int h = 0, bool useContext = 0);
   public: class QImage grabFrameBuffer(bool withAlpha = 0);
   public: void makeOverlayCurrent();
   public: class QGLContext const * overlayContext() const
   public: static class QImage convertToGLFormat(class QImage const & img);
   public: void setMouseTracking(bool enable);
   public: class QGLColormap const & colormap() const
   public: void setColormap(class QGLColormap const & map);
   public: void renderText(int x, int y, class QString const & str, class QFont const & fnt = QFont::QFont(), int listBase = 2000);
   public: void renderText(double x, double y, double z, class QString const & str, class QFont const & fnt = QFont::QFont(), int listBase = 2000);
   public: virtual struct QPaintEngine* paintEngine() const
   public: GLuint bindTexture(class QImage const & image, GLenum target = 3553, GLint format = 6408);
   public: GLuint bindTexture(class QPixmap const & pixmap, GLenum target = 3553, GLint format = 6408);
   public: GLuint bindTexture(class QString const & fileName);
   public: void deleteTexture(GLuint tx_id);
   public: virtual void updateGL();
   public: virtual void updateOverlayGL();
   protected: virtual bool event(struct QEvent*);
   protected: virtual void initializeGL();
   protected: virtual void resizeGL(int w, int h);
   protected: virtual void paintGL();
   protected: virtual void initializeOverlayGL();
   protected: virtual void resizeOverlayGL(int w, int h);
   protected: virtual void paintOverlayGL();
   protected: void setAutoBufferSwap(bool on);
   protected: bool autoBufferSwap() const
   protected: virtual void paintEvent(struct QPaintEvent*);
   protected: virtual void resizeEvent(struct QResizeEvent*);
   protected: virtual void glInit();
   protected: virtual void glDraw();
   protected: int fontDisplayListBase(class QFont const & fnt, int listBase = 2000);
   private: QGLWidget(QGLWidget&);
   private: class QGLWidget& operator =(QGLWidget&);
   friend struct QGLWidgetPrivate;
   friend struct QGLDrawable;
   friend struct QGLPixelBuffer;
   friend struct QGLPixelBufferPrivate;
   friend class QGLContext;
   friend struct QGLOverlayWidget;
   friend struct QOpenGLPaintEngine;
};
#endif // QGL_H