Merge remote-tracking branch 'qt/4.8'
[qt:qt.git] / src / opengl / qgl.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the QtOpenGL module of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
17 **
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
21 **
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
29 **
30 ** Other Usage
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** conditions contained in a signed written agreement between you and Nokia.
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef QGL_H
43 #define QGL_H
44
45 #include <QtGui/qwidget.h>
46 #include <QtGui/qpaintengine.h>
47 #include <QtOpenGL/qglcolormap.h>
48 #include <QtCore/qmap.h>
49 #include <QtCore/qscopedpointer.h>
50
51 #ifdef Q_WS_QPA
52 #include <QtGui/QPlatformWindowFormat>
53 #endif
54
55 QT_BEGIN_HEADER
56
57 #if defined(Q_WS_WIN)
58 # include <QtCore/qt_windows.h>
59 #endif
60
61 #if defined(Q_WS_MAC)
62 # include <OpenGL/gl.h>
63 #elif defined(QT_OPENGL_ES_1)
64 # if defined(Q_OS_MAC)
65 #  include <OpenGLES/ES1/gl.h>
66 # else
67 #  include <GLES/gl.h>
68 # endif
69 # ifndef GL_DOUBLE
70 #  define GL_DOUBLE GL_FLOAT
71 # endif
72 # ifndef GLdouble
73 typedef GLfloat GLdouble;
74 # endif
75 #elif defined(QT_OPENGL_ES_2)
76 # if defined(Q_OS_MAC)
77 #  include <OpenGLES/ES2/gl.h>
78 # else
79 #  include <GLES2/gl2.h>
80 # endif
81 # ifndef GL_DOUBLE
82 #  define GL_DOUBLE GL_FLOAT
83 # endif
84 # ifndef GLdouble
85 typedef GLfloat GLdouble;
86 # endif
87 #else
88 # include <GL/gl.h>
89 #endif
90
91 QT_BEGIN_NAMESPACE
92
93 QT_MODULE(OpenGL)
94
95 #if defined(Q_WS_MAC) && defined (QT_BUILD_OPENGL_LIB) && !defined(QT_MAC_USE_COCOA) && !defined(QDOC)
96 #define Q_MAC_COMPAT_GL_FUNCTIONS
97
98 template <typename T>
99 struct QMacGLCompatTypes
100 {
101     typedef long CompatGLint;
102     typedef unsigned long CompatGLuint;
103     typedef unsigned long CompatGLenum;
104 };
105
106 template <>
107 struct QMacGLCompatTypes<long>
108 {
109     typedef int CompatGLint;
110     typedef unsigned int CompatGLuint;
111     typedef unsigned int CompatGLenum;
112 };
113
114 typedef QMacGLCompatTypes<GLint>::CompatGLint QMacCompatGLint;
115 typedef QMacGLCompatTypes<GLint>::CompatGLuint QMacCompatGLuint;
116 typedef QMacGLCompatTypes<GLint>::CompatGLenum QMacCompatGLenum;
117
118 #endif
119
120 #ifdef QT3_SUPPORT
121 #define QGL_VERSION        460
122 #define QGL_VERSION_STR        "4.6"
123 inline QT3_SUPPORT const char *qGLVersion() {
124     return QGL_VERSION_STR;
125 }
126 #endif
127
128 #if defined(Q_WS_WIN) || defined(Q_WS_MAC)
129 class QGLCmap;
130 #endif
131
132 class QPixmap;
133 #if defined(Q_WS_X11) && !defined(QT_OPENGL_ES)
134 class QGLOverlayWidget;
135 #endif
136 class QGLWidgetPrivate;
137 class QGLContextPrivate;
138
139 // Namespace class:
140 namespace QGL
141 {
142     Q_OPENGL_EXPORT void setPreferredPaintEngine(QPaintEngine::Type engineType);
143
144     enum FormatOption {
145         DoubleBuffer            = 0x0001,
146         DepthBuffer             = 0x0002,
147         Rgba                    = 0x0004,
148         AlphaChannel            = 0x0008,
149         AccumBuffer             = 0x0010,
150         StencilBuffer           = 0x0020,
151         StereoBuffers           = 0x0040,
152         DirectRendering         = 0x0080,
153         HasOverlay              = 0x0100,
154         SampleBuffers           = 0x0200,
155         DeprecatedFunctions     = 0x0400,
156         SingleBuffer            = DoubleBuffer    << 16,
157         NoDepthBuffer           = DepthBuffer     << 16,
158         ColorIndex              = Rgba            << 16,
159         NoAlphaChannel          = AlphaChannel    << 16,
160         NoAccumBuffer           = AccumBuffer     << 16,
161         NoStencilBuffer         = StencilBuffer   << 16,
162         NoStereoBuffers         = StereoBuffers   << 16,
163         IndirectRendering       = DirectRendering << 16,
164         NoOverlay               = HasOverlay      << 16,
165         NoSampleBuffers         = SampleBuffers   << 16,
166         NoDeprecatedFunctions   = DeprecatedFunctions << 16
167     };
168     Q_DECLARE_FLAGS(FormatOptions, FormatOption)
169 }
170
171 Q_DECLARE_OPERATORS_FOR_FLAGS(QGL::FormatOptions)
172
173 class QGLFormatPrivate;
174
175 class Q_OPENGL_EXPORT QGLFormat
176 {
177 public:
178     QGLFormat();
179     QGLFormat(QGL::FormatOptions options, int plane = 0);
180     QGLFormat(const QGLFormat &other);
181     QGLFormat &operator=(const QGLFormat &other);
182     ~QGLFormat();
183
184     void setDepthBufferSize(int size);
185     int  depthBufferSize() const;
186
187     void setAccumBufferSize(int size);
188     int  accumBufferSize() const;
189
190     void setRedBufferSize(int size);
191     int  redBufferSize() const;
192
193     void setGreenBufferSize(int size);
194     int  greenBufferSize() const;
195
196     void setBlueBufferSize(int size);
197     int  blueBufferSize() const;
198
199     void setAlphaBufferSize(int size);
200     int  alphaBufferSize() const;
201
202     void setStencilBufferSize(int size);
203     int  stencilBufferSize() const;
204
205     void setSampleBuffers(bool enable);
206     bool sampleBuffers() const;
207
208     void setSamples(int numSamples);
209     int  samples() const;
210
211     void setSwapInterval(int interval);
212     int  swapInterval() const;
213
214     bool doubleBuffer() const;
215     void setDoubleBuffer(bool enable);
216     bool depth() const;
217     void setDepth(bool enable);
218     bool rgba() const;
219     void setRgba(bool enable);
220     bool alpha() const;
221     void setAlpha(bool enable);
222     bool accum() const;
223     void setAccum(bool enable);
224     bool stencil() const;
225     void setStencil(bool enable);
226     bool stereo() const;
227     void setStereo(bool enable);
228     bool directRendering() const;
229     void setDirectRendering(bool enable);
230     bool hasOverlay() const;
231     void setOverlay(bool enable);
232
233     int plane() const;
234     void setPlane(int plane);
235
236     void setOption(QGL::FormatOptions opt);
237     bool testOption(QGL::FormatOptions opt) const;
238
239     static QGLFormat defaultFormat();
240     static void setDefaultFormat(const QGLFormat& f);
241
242     static QGLFormat defaultOverlayFormat();
243     static void setDefaultOverlayFormat(const QGLFormat& f);
244
245     static bool hasOpenGL();
246     static bool hasOpenGLOverlays();
247
248     void setVersion(int major, int minor);
249     int majorVersion() const;
250     int minorVersion() const;
251
252     enum OpenGLContextProfile {
253         NoProfile,
254         CoreProfile,
255         CompatibilityProfile
256     };
257
258     void setProfile(OpenGLContextProfile profile);
259     OpenGLContextProfile profile() const;
260
261     enum OpenGLVersionFlag {
262         OpenGL_Version_None               = 0x00000000,
263         OpenGL_Version_1_1                = 0x00000001,
264         OpenGL_Version_1_2                = 0x00000002,
265         OpenGL_Version_1_3                = 0x00000004,
266         OpenGL_Version_1_4                = 0x00000008,
267         OpenGL_Version_1_5                = 0x00000010,
268         OpenGL_Version_2_0                = 0x00000020,
269         OpenGL_Version_2_1                = 0x00000040,
270         OpenGL_ES_Common_Version_1_0      = 0x00000080,
271         OpenGL_ES_CommonLite_Version_1_0  = 0x00000100,
272         OpenGL_ES_Common_Version_1_1      = 0x00000200,
273         OpenGL_ES_CommonLite_Version_1_1  = 0x00000400,
274         OpenGL_ES_Version_2_0             = 0x00000800,
275         OpenGL_Version_3_0                = 0x00001000,
276         OpenGL_Version_3_1                = 0x00002000,
277         OpenGL_Version_3_2                = 0x00004000,
278         OpenGL_Version_3_3                = 0x00008000,
279         OpenGL_Version_4_0                = 0x00010000
280     };
281     Q_DECLARE_FLAGS(OpenGLVersionFlags, OpenGLVersionFlag)
282
283     static OpenGLVersionFlags openGLVersionFlags();
284
285 #if defined(Q_WS_QPA)
286     static QGLFormat fromPlatformWindowFormat(const QPlatformWindowFormat &format);
287     static QPlatformWindowFormat toPlatformWindowFormat(const QGLFormat &format);
288 #endif
289 private:
290     QGLFormatPrivate *d;
291
292     void detach();
293
294     friend Q_OPENGL_EXPORT bool operator==(const QGLFormat&, const QGLFormat&);
295     friend Q_OPENGL_EXPORT bool operator!=(const QGLFormat&, const QGLFormat&);
296 #ifndef QT_NO_DEBUG_STREAM
297     friend Q_OPENGL_EXPORT QDebug operator<<(QDebug, const QGLFormat &);
298 #endif
299 };
300
301 Q_DECLARE_OPERATORS_FOR_FLAGS(QGLFormat::OpenGLVersionFlags)
302
303 Q_OPENGL_EXPORT bool operator==(const QGLFormat&, const QGLFormat&);
304 Q_OPENGL_EXPORT bool operator!=(const QGLFormat&, const QGLFormat&);
305
306 #ifndef QT_NO_DEBUG_STREAM
307 Q_OPENGL_EXPORT QDebug operator<<(QDebug, const QGLFormat &);
308 #endif
309
310 class Q_OPENGL_EXPORT QGLContext
311 {
312     Q_DECLARE_PRIVATE(QGLContext)
313 public:
314     QGLContext(const QGLFormat& format, QPaintDevice* device);
315     QGLContext(const QGLFormat& format);
316     virtual ~QGLContext();
317
318     virtual bool create(const QGLContext* shareContext = 0);
319     bool isValid() const;
320     bool isSharing() const;
321     void reset();
322
323     static bool areSharing(const QGLContext *context1, const QGLContext *context2);
324
325     QGLFormat format() const;
326     QGLFormat requestedFormat() const;
327     void setFormat(const QGLFormat& format);
328
329     // ### Qt 5: return bools + maybe remove virtuals
330     virtual void makeCurrent();
331     virtual void doneCurrent();
332
333     virtual void swapBuffers() const;
334
335     enum BindOption {
336         NoBindOption                            = 0x0000,
337         InvertedYBindOption                     = 0x0001,
338         MipmapBindOption                        = 0x0002,
339         PremultipliedAlphaBindOption            = 0x0004,
340         LinearFilteringBindOption               = 0x0008,
341
342         MemoryManagedBindOption                 = 0x0010, // internal flag
343         CanFlipNativePixmapBindOption           = 0x0020, // internal flag
344         TemporarilyCachedBindOption             = 0x0040, // internal flag
345
346         DefaultBindOption                       = LinearFilteringBindOption
347                                                   | InvertedYBindOption
348                                                   | MipmapBindOption,
349         InternalBindOption                      = MemoryManagedBindOption
350                                                   | PremultipliedAlphaBindOption
351     };
352     Q_DECLARE_FLAGS(BindOptions, BindOption)
353
354     GLuint bindTexture(const QImage &image, GLenum target, GLint format,
355                        BindOptions options);
356     GLuint bindTexture(const QPixmap &pixmap, GLenum target, GLint format,
357                        BindOptions options);
358
359     GLuint bindTexture(const QImage &image, GLenum target = GL_TEXTURE_2D,
360                        GLint format = GL_RGBA);
361     GLuint bindTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D,
362                        GLint format = GL_RGBA);
363     GLuint bindTexture(const QString &fileName);
364
365     void deleteTexture(GLuint tx_id);
366
367     void drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D);
368     void drawTexture(const QPointF &point, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D);
369
370 #ifdef Q_MAC_COMPAT_GL_FUNCTIONS
371     GLuint bindTexture(const QImage &image, QMacCompatGLenum = GL_TEXTURE_2D,
372                        QMacCompatGLint format = GL_RGBA);
373     GLuint bindTexture(const QPixmap &pixmap, QMacCompatGLenum = GL_TEXTURE_2D,
374                        QMacCompatGLint format = GL_RGBA);
375     GLuint bindTexture(const QImage &image, QMacCompatGLenum, QMacCompatGLint format,
376                        BindOptions);
377     GLuint bindTexture(const QPixmap &pixmap, QMacCompatGLenum, QMacCompatGLint format,
378                        BindOptions);
379
380     void deleteTexture(QMacCompatGLuint tx_id);
381
382     void drawTexture(const QRectF &target, QMacCompatGLuint textureId, QMacCompatGLenum textureTarget = GL_TEXTURE_2D);
383     void drawTexture(const QPointF &point, QMacCompatGLuint textureId, QMacCompatGLenum textureTarget = GL_TEXTURE_2D);
384 #endif
385
386     static void setTextureCacheLimit(int size);
387     static int textureCacheLimit();
388
389     void *getProcAddress(const QString &proc) const;
390     QPaintDevice* device() const;
391     QColor overlayTransparentColor() const;
392
393     static const QGLContext* currentContext();
394
395 #ifdef Q_WS_QPA
396     static QGLContext *fromPlatformGLContext(QPlatformGLContext *platformContext);
397 #endif
398 protected:
399     virtual bool chooseContext(const QGLContext* shareContext = 0);
400
401 #if defined(Q_WS_WIN)
402     virtual int choosePixelFormat(void* pfd, HDC pdc);
403 #endif
404 #if defined(Q_WS_X11)
405     virtual void* tryVisual(const QGLFormat& f, int bufDepth = 1);
406     virtual void* chooseVisual();
407 #endif
408 #if defined(Q_WS_MAC)
409     virtual void* chooseMacVisual(GDHandle);
410 #endif
411
412     bool deviceIsPixmap() const;
413     bool windowCreated() const;
414     void setWindowCreated(bool on);
415     bool initialized() const;
416     void setInitialized(bool on);
417     void generateFontDisplayLists(const QFont & fnt, int listBase); // ### Qt 5: remove
418
419     uint colorIndex(const QColor& c) const;
420     void setValid(bool valid);
421     void setDevice(QPaintDevice *pDev);
422
423 protected:
424     static QGLContext* currentCtx;
425
426 private:
427 #ifdef Q_WS_QPA
428     QGLContext(QPlatformGLContext *platformContext);
429 #endif
430
431     QScopedPointer<QGLContextPrivate> d_ptr;
432
433     friend class QGLPixelBuffer;
434     friend class QGLPixelBufferPrivate;
435     friend class QGLWidget;
436     friend class QGLWidgetPrivate;
437     friend class QGLGlyphCache;
438     friend class QOpenGLPaintEngine;
439     friend class QOpenGLPaintEnginePrivate;
440     friend class QGL2PaintEngineEx;
441     friend class QGL2PaintEngineExPrivate;
442     friend class QGLEngineShaderManager;
443     friend class QGLWindowSurface;
444     friend class QGLPixmapData;
445     friend class QGLPixmapFilterBase;
446     friend class QGLTextureGlyphCache;
447     friend struct QGLGlyphTexture;
448     friend class QGLContextGroup;
449     friend class QGLSharedResourceGuard;
450     friend class QGLPixmapBlurFilter;
451     friend class QGLExtensions;
452     friend class QGLTexture;
453     friend QGLFormat::OpenGLVersionFlags QGLFormat::openGLVersionFlags();
454 #ifdef Q_WS_MAC
455 public:
456     void updatePaintDevice();
457 private:
458     friend class QMacGLWindowChangeEvent;
459     friend QGLContextPrivate *qt_phonon_get_dptr(const QGLContext *);
460 #endif
461     friend class QGLFramebufferObject;
462     friend class QGLFramebufferObjectPrivate;
463     friend class QGLFBOGLPaintDevice;
464     friend class QGLPaintDevice;
465     friend class QGLWidgetGLPaintDevice;
466     friend class QX11GLPixmapData;
467     friend class QX11GLSharedContexts;
468     friend class QGLContextResourceBase;
469 private:
470     Q_DISABLE_COPY(QGLContext)
471 };
472
473 Q_DECLARE_OPERATORS_FOR_FLAGS(QGLContext::BindOptions)
474
475 class Q_OPENGL_EXPORT QGLWidget : public QWidget
476 {
477     Q_OBJECT
478     Q_DECLARE_PRIVATE(QGLWidget)
479 public:
480     explicit QGLWidget(QWidget* parent=0,
481                        const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);
482     explicit QGLWidget(QGLContext *context, QWidget* parent=0,
483                        const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);
484     explicit QGLWidget(const QGLFormat& format, QWidget* parent=0,
485                        const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);
486 #ifdef QT3_SUPPORT
487     QT3_SUPPORT_CONSTRUCTOR QGLWidget(QWidget* parent, const char* name,
488                                     const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);
489     QT3_SUPPORT_CONSTRUCTOR QGLWidget(QGLContext *context, QWidget* parent, const char* name,
490                                     const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);
491     QT3_SUPPORT_CONSTRUCTOR QGLWidget(const QGLFormat& format, QWidget* parent, const char* name,
492                                     const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);
493 #endif
494     ~QGLWidget();
495
496     void qglColor(const QColor& c) const;
497     void qglClearColor(const QColor& c) const;
498
499     bool isValid() const;
500     bool isSharing() const;
501
502     // ### Qt 5: return bools
503     void makeCurrent();
504     void doneCurrent();
505
506     bool doubleBuffer() const;
507     void swapBuffers();
508
509     QGLFormat format() const;
510     void setFormat(const QGLFormat& format);
511
512     const QGLContext* context() const;
513     void setContext(QGLContext* context, const QGLContext* shareContext = 0,
514                     bool deleteOldContext = true);
515
516     QPixmap renderPixmap(int w = 0, int h = 0, bool useContext = false);
517     QImage grabFrameBuffer(bool withAlpha = false);
518
519     void makeOverlayCurrent();
520     const QGLContext* overlayContext() const;
521
522     static QImage convertToGLFormat(const QImage& img);
523
524     void setMouseTracking(bool enable);
525
526     const QGLColormap & colormap() const;
527     void  setColormap(const QGLColormap & map);
528
529     void renderText(int x, int y, const QString & str,
530                      const QFont & fnt = QFont(), int listBase = 2000);
531     void renderText(double x, double y, double z, const QString & str,
532                      const QFont & fnt = QFont(), int listBase = 2000);
533     QPaintEngine *paintEngine() const;
534
535     GLuint bindTexture(const QImage &image, GLenum target, GLint format,
536                        QGLContext::BindOptions options);
537     GLuint bindTexture(const QPixmap &pixmap, GLenum target, GLint format,
538                        QGLContext::BindOptions options);
539
540     GLuint bindTexture(const QImage &image, GLenum target = GL_TEXTURE_2D,
541                        GLint format = GL_RGBA);
542     GLuint bindTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D,
543                        GLint format = GL_RGBA);
544
545     GLuint bindTexture(const QString &fileName);
546
547     void deleteTexture(GLuint tx_id);
548
549     void drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D);
550     void drawTexture(const QPointF &point, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D);
551
552 #ifdef Q_MAC_COMPAT_GL_FUNCTIONS
553     GLuint bindTexture(const QImage &image, QMacCompatGLenum = GL_TEXTURE_2D,
554                        QMacCompatGLint format = GL_RGBA);
555     GLuint bindTexture(const QPixmap &pixmap, QMacCompatGLenum = GL_TEXTURE_2D,
556                        QMacCompatGLint format = GL_RGBA);
557     GLuint bindTexture(const QImage &image, QMacCompatGLenum, QMacCompatGLint format,
558                        QGLContext::BindOptions);
559     GLuint bindTexture(const QPixmap &pixmap, QMacCompatGLenum, QMacCompatGLint format,
560                        QGLContext::BindOptions);
561
562     void deleteTexture(QMacCompatGLuint tx_id);
563
564     void drawTexture(const QRectF &target, QMacCompatGLuint textureId, QMacCompatGLenum textureTarget = GL_TEXTURE_2D);
565     void drawTexture(const QPointF &point, QMacCompatGLuint textureId, QMacCompatGLenum textureTarget = GL_TEXTURE_2D);
566 #endif
567
568 public Q_SLOTS:
569     virtual void updateGL();
570     virtual void updateOverlayGL();
571
572 protected:
573     bool event(QEvent *);
574     virtual void initializeGL();
575     virtual void resizeGL(int w, int h);
576     virtual void paintGL();
577
578     virtual void initializeOverlayGL();
579     virtual void resizeOverlayGL(int w, int h);
580     virtual void paintOverlayGL();
581
582     void setAutoBufferSwap(bool on);
583     bool autoBufferSwap() const;
584
585     void paintEvent(QPaintEvent*);
586     void resizeEvent(QResizeEvent*);
587
588     virtual void glInit();
589     virtual void glDraw();
590     int fontDisplayListBase(const QFont & fnt, int listBase = 2000); // ### Qt 5: remove
591
592 private:
593     Q_DISABLE_COPY(QGLWidget)
594
595 #ifdef Q_WS_MAC
596     friend class QMacGLWindowChangeEvent;
597 #endif
598     friend class QGLDrawable;
599     friend class QGLPixelBuffer;
600     friend class QGLPixelBufferPrivate;
601     friend class QGLContext;
602     friend class QGLContextPrivate;
603     friend class QGLOverlayWidget;
604     friend class QOpenGLPaintEngine;
605     friend class QGLPaintDevice;
606     friend class QGLWidgetGLPaintDevice;
607 };
608
609
610 //
611 // QGLFormat inline functions
612 //
613
614 inline bool QGLFormat::doubleBuffer() const
615 {
616     return testOption(QGL::DoubleBuffer);
617 }
618
619 inline bool QGLFormat::depth() const
620 {
621     return testOption(QGL::DepthBuffer);
622 }
623
624 inline bool QGLFormat::rgba() const
625 {
626     return testOption(QGL::Rgba);
627 }
628
629 inline bool QGLFormat::alpha() const
630 {
631     return testOption(QGL::AlphaChannel);
632 }
633
634 inline bool QGLFormat::accum() const
635 {
636     return testOption(QGL::AccumBuffer);
637 }
638
639 inline bool QGLFormat::stencil() const
640 {
641     return testOption(QGL::StencilBuffer);
642 }
643
644 inline bool QGLFormat::stereo() const
645 {
646     return testOption(QGL::StereoBuffers);
647 }
648
649 inline bool QGLFormat::directRendering() const
650 {
651     return testOption(QGL::DirectRendering);
652 }
653
654 inline bool QGLFormat::hasOverlay() const
655 {
656     return testOption(QGL::HasOverlay);
657 }
658
659 inline bool QGLFormat::sampleBuffers() const
660 {
661     return testOption(QGL::SampleBuffers);
662 }
663
664 QT_END_NAMESPACE
665
666 QT_END_HEADER
667
668 #endif // QGL_H