diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2011-04-26 12:43:11 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-04-28 15:38:48 +0200 |
commit | fbef41167aa4aede67bc1ec904142e2e5e12c7fc (patch) | |
tree | e8c77fbeab44e1d95ecf9870f9a323d7f9ce95c7 /src/gui/kernel/qwindowformat_qpa.cpp | |
parent | 25028e3b144a54435be437d452b65bfbd4f63309 (diff) |
Make QtGui compile again....
Comment out stuff in QWidget::create_sys
(cherry picked from commit 1bbc6a6bb2bf1175080e7a5ba6834ff642fd47ab)
Diffstat (limited to 'src/gui/kernel/qwindowformat_qpa.cpp')
-rw-r--r-- | src/gui/kernel/qwindowformat_qpa.cpp | 792 |
1 files changed, 64 insertions, 728 deletions
diff --git a/src/gui/kernel/qwindowformat_qpa.cpp b/src/gui/kernel/qwindowformat_qpa.cpp index 4cc1f77e58..831e1a91b8 100644 --- a/src/gui/kernel/qwindowformat_qpa.cpp +++ b/src/gui/kernel/qwindowformat_qpa.cpp @@ -43,196 +43,59 @@ #include <QtCore/QDebug> -Q_GLOBAL_STATIC(QPlatformWindowFormat, q_platformwindow_default_format); - -class QPlatformWindowFormatPrivate +class QWindowFormatPrivate { public: - QPlatformWindowFormatPrivate() + QWindowFormatPrivate() : ref(1) - , opts(QPlatformWindowFormat::DoubleBuffer | QPlatformWindowFormat::DepthBuffer - | QPlatformWindowFormat::Rgba | QPlatformWindowFormat::DirectRendering - | QPlatformWindowFormat::StencilBuffer | QPlatformWindowFormat::DeprecatedFunctions - | QPlatformWindowFormat::HasWindowSurface) + , opts(QWindowFormat::DoubleBuffer | QWindowFormat::WindowSurface) , depthSize(-1) - , accumSize(-1) , stencilSize(-1) - , redSize(-1) - , greenSize(-1) - , blueSize(-1) - , alphaSize(-1) + , colorFormat(QWindowFormat::RGB888) , numSamples(-1) - , swapInterval(-1) - , windowApi(QPlatformWindowFormat::Raster) , sharedContext(0) { } - QPlatformWindowFormatPrivate(const QPlatformWindowFormatPrivate *other) + QWindowFormatPrivate(const QWindowFormatPrivate *other) : ref(1), opts(other->opts), depthSize(other->depthSize), - accumSize(other->accumSize), stencilSize(other->stencilSize), - redSize(other->redSize), - greenSize(other->greenSize), - blueSize(other->blueSize), - alphaSize(other->alphaSize), + colorFormat(other->colorFormat), + swapBehavior(other->swapBehavior), numSamples(other->numSamples), - swapInterval(other->swapInterval), - windowApi(other->windowApi), sharedContext(other->sharedContext) { } QAtomicInt ref; - QPlatformWindowFormat::FormatOptions opts; + QWindowFormat::FormatOptions opts; int depthSize; - int accumSize; int stencilSize; - int redSize; - int greenSize; - int blueSize; - int alphaSize; + QWindowFormat::ColorFormat colorFormat; + QWindowFormat::SwapBehavior swapBehavior; int numSamples; - int swapInterval; - QPlatformWindowFormat::WindowApi windowApi; QPlatformGLContext *sharedContext; }; -/*! - \class QPlatformWindowFormat - \brief The QPlatformWindowFormat class specifies the display format of an OpenGL - rendering context and if possible attributes of the corresponding QPlatformWindow. - - \ingroup painting - - QWidget has a setter and getter function for QPlatformWindowFormat. These functions can be used - by the application programmer to signal what kind of format he wants to the window and glcontext - should have. However, it is not always possible to fulfill these requirements. The application - programmer should therefore check the resulting QPlatformWindowFormat from QPlatformGLContext - to see the format that was actually created. - - A display format has several characteristics: - \list - \i \link setDoubleBuffer() Double or single buffering.\endlink - \i \link setDepth() Depth buffer.\endlink - \i \link setRgba() RGBA or color index mode.\endlink - \i \link setAlpha() Alpha channel.\endlink - \i \link setAccum() Accumulation buffer.\endlink - \i \link setStencil() Stencil buffer.\endlink - \i \link setStereo() Stereo buffers.\endlink - \i \link setDirectRendering() Direct rendering.\endlink - \i \link setOverlay() Presence of an overlay.\endlink - \i \link setPlane() Plane of an overlay.\endlink - \i \link setSampleBuffers() Multisample buffers.\endlink - \endlist - - You can also specify preferred bit depths for the color buffer, - depth buffer, alpha buffer, accumulation buffer and the stencil - buffer with the functions: setRedBufferSize(), setGreenBufferSize(), - setBlueBufferSize(), setDepthBufferSize(), setAlphaBufferSize(), - setAccumBufferSize() and setStencilBufferSize(). - - Note that even if you specify that you prefer a 32 bit depth - buffer (e.g. with setDepthBufferSize(32)), the format that is - chosen may not have a 32 bit depth buffer, even if there is a - format available with a 32 bit depth buffer. The main reason for - this is how the system dependant picking algorithms work on the - different platforms, and some format options may have higher - precedence than others. - - You create and tell a QPlatformWindowFormat object what rendering options you - want from an OpenGL rendering context. - - OpenGL drivers or accelerated hardware may or may not support - advanced features such as alpha channel or stereographic viewing. - If you request some features that the driver/hardware does not - provide when you create a QGLWidget, you will get a rendering - context with the nearest subset of features. - - There are different ways to define the display characteristics of - a rendering context. One is to create a QPlatformWindowFormat and make it the - default for the entire application: - \snippet doc/src/snippets/code/src_opengl_qgl.cpp 0 - - Or you can specify the desired format when creating an object of - your QGLWidget subclass: - \snippet doc/src/snippets/code/src_opengl_qgl.cpp 1 - - After the widget has been created, you can find out which of the - requested features the system was able to provide: - \snippet doc/src/snippets/code/src_opengl_qgl.cpp 2 - - \legalese - OpenGL is a trademark of Silicon Graphics, Inc. in the - United States and other countries. - \endlegalese - - \sa QPlatformContext, QWidget -*/ - -/*! - Constructs a QPlatformWindowFormat object with the following default settings: - \list - \i \link setDoubleBuffer() Double buffer:\endlink Enabled. - \i \link setDepth() Depth buffer:\endlink Enabled. - \i \link setRgba() RGBA:\endlink Enabled (i.e., color index disabled). - \i \link setAlpha() Alpha channel:\endlink Disabled. - \i \link setAccum() Accumulator buffer:\endlink Disabled. - \i \link setStencil() Stencil buffer:\endlink Enabled. - \i \link setStereo() Stereo:\endlink Disabled. - \i \link setDirectRendering() Direct rendering:\endlink Enabled. - \i \link setOverlay() Overlay:\endlink Disabled. - \i \link setPlane() Plane:\endlink 0 (i.e., normal plane). - \i \link setSampleBuffers() Multisample buffers:\endlink Disabled. - \endlist -*/ - -QPlatformWindowFormat::QPlatformWindowFormat() +QWindowFormat::QWindowFormat() { - d = new QPlatformWindowFormatPrivate; + d = new QWindowFormatPrivate; } - -/*! - Creates a QPlatformWindowFormat object that is a copy of the current - defaultFormat(). - - If \a options is not 0, the default format is modified by the - specified format options. The \a options parameter should be - QGL::FormatOption values OR'ed together. - - This constructor makes it easy to specify a certain desired format - in classes derived from QGLWidget, for example: - \snippet doc/src/snippets/code/src_opengl_qgl.cpp 3 - - Note that there are QGL::FormatOption values to turn format settings - both on and off, e.g. QGL::DepthBuffer and QGL::NoDepthBuffer, - QGL::DirectRendering and QGL::IndirectRendering, etc. - - The \a plane parameter defaults to 0 and is the plane which this - format should be associated with. Not all OpenGL implementations - supports overlay/underlay rendering planes. - - \sa defaultFormat(), setOption(), setPlane() -*/ - -QPlatformWindowFormat::QPlatformWindowFormat(QPlatformWindowFormat::FormatOptions options) +QWindowFormat::QWindowFormat(QWindowFormat::FormatOptions options) { - d = new QPlatformWindowFormatPrivate; - QPlatformWindowFormat::FormatOptions newOpts = options; - d->opts = defaultFormat().d->opts; - d->opts |= (newOpts & 0xffff); - d->opts &= ~(newOpts >> 16); + d = new QWindowFormatPrivate; + d->opts = options; } /*! \internal */ -void QPlatformWindowFormat::detach() +void QWindowFormat::detach() { if (d->ref != 1) { - QPlatformWindowFormatPrivate *newd = new QPlatformWindowFormatPrivate(d); + QWindowFormatPrivate *newd = new QWindowFormatPrivate(d); if (!d->ref.deref()) delete d; d = newd; @@ -243,7 +106,7 @@ void QPlatformWindowFormat::detach() Constructs a copy of \a other. */ -QPlatformWindowFormat::QPlatformWindowFormat(const QPlatformWindowFormat &other) +QWindowFormat::QWindowFormat(const QWindowFormat &other) { d = other.d; d->ref.ref(); @@ -253,7 +116,7 @@ QPlatformWindowFormat::QPlatformWindowFormat(const QPlatformWindowFormat &other) Assigns \a other to this object. */ -QPlatformWindowFormat &QPlatformWindowFormat::operator=(const QPlatformWindowFormat &other) +QWindowFormat &QWindowFormat::operator=(const QWindowFormat &other) { if (d != other.d) { other.d->ref.ref(); @@ -265,190 +128,16 @@ QPlatformWindowFormat &QPlatformWindowFormat::operator=(const QPlatformWindowFor } /*! - Destroys the QPlatformWindowFormat. + Destroys the QWindowFormat. */ -QPlatformWindowFormat::~QPlatformWindowFormat() +QWindowFormat::~QWindowFormat() { if (!d->ref.deref()) delete d; } /*! - \fn bool QPlatformWindowFormat::doubleBuffer() const - - Returns true if double buffering is enabled; otherwise returns - false. Double buffering is enabled by default. - - \sa setDoubleBuffer() -*/ - -/*! - If \a enable is true sets double buffering; otherwise sets single - buffering. - - Double buffering is enabled by default. - - Double buffering is a technique where graphics are rendered on an - off-screen buffer and not directly to the screen. When the drawing - has been completed, the program calls a swapBuffers() function to - exchange the screen contents with the buffer. The result is - flicker-free drawing and often better performance. - - \sa doubleBuffer(), QGLContext::swapBuffers(), - QGLWidget::swapBuffers() -*/ - -void QPlatformWindowFormat::setDoubleBuffer(bool enable) -{ - setOption(enable ? QPlatformWindowFormat::DoubleBuffer : QPlatformWindowFormat::SingleBuffer); -} - - -/*! - \fn bool QPlatformWindowFormat::depth() const - - Returns true if the depth buffer is enabled; otherwise returns - false. The depth buffer is enabled by default. - - \sa setDepth(), setDepthBufferSize() -*/ - -/*! - If \a enable is true enables the depth buffer; otherwise disables - the depth buffer. - - The depth buffer is enabled by default. - - The purpose of a depth buffer (or Z-buffering) is to remove hidden - surfaces. Pixels are assigned Z values based on the distance to - the viewer. A pixel with a high Z value is closer to the viewer - than a pixel with a low Z value. This information is used to - decide whether to draw a pixel or not. - - \sa depth(), setDepthBufferSize() -*/ - -void QPlatformWindowFormat::setDepth(bool enable) -{ - setOption(enable ? QPlatformWindowFormat::DepthBuffer : QPlatformWindowFormat::NoDepthBuffer); -} - - -/*! - \fn bool QPlatformWindowFormat::rgba() const - - Returns true if RGBA color mode is set. Returns false if color - index mode is set. The default color mode is RGBA. - - \sa setRgba() -*/ - -/*! - If \a enable is true sets RGBA mode. If \a enable is false sets - color index mode. - - The default color mode is RGBA. - - RGBA is the preferred mode for most OpenGL applications. In RGBA - color mode you specify colors as red + green + blue + alpha - quadruplets. - - In color index mode you specify an index into a color lookup - table. - - \sa rgba() -*/ - -void QPlatformWindowFormat::setRgba(bool enable) -{ - setOption(enable ? QPlatformWindowFormat::Rgba : QPlatformWindowFormat::ColorIndex); -} - - -/*! - \fn bool QPlatformWindowFormat::alpha() const - - Returns true if the alpha buffer in the framebuffer is enabled; - otherwise returns false. The alpha buffer is disabled by default. - - \sa setAlpha(), setAlphaBufferSize() -*/ - -/*! - If \a enable is true enables the alpha buffer; otherwise disables - the alpha buffer. - - The alpha buffer is disabled by default. - - The alpha buffer is typically used for implementing transparency - or translucency. The A in RGBA specifies the transparency of a - pixel. - - \sa alpha(), setAlphaBufferSize() -*/ - -void QPlatformWindowFormat::setAlpha(bool enable) -{ - setOption(enable ? QPlatformWindowFormat::AlphaChannel : QPlatformWindowFormat::NoAlphaChannel); -} - - -/*! - \fn bool QPlatformWindowFormat::accum() const - - Returns true if the accumulation buffer is enabled; otherwise - returns false. The accumulation buffer is disabled by default. - - \sa setAccum(), setAccumBufferSize() -*/ - -/*! - If \a enable is true enables the accumulation buffer; otherwise - disables the accumulation buffer. - - The accumulation buffer is disabled by default. - - The accumulation buffer is used to create blur effects and - multiple exposures. - - \sa accum(), setAccumBufferSize() -*/ - -void QPlatformWindowFormat::setAccum(bool enable) -{ - setOption(enable ? QPlatformWindowFormat::AccumBuffer : QPlatformWindowFormat::NoAccumBuffer); -} - - -/*! - \fn bool QPlatformWindowFormat::stencil() const - - Returns true if the stencil buffer is enabled; otherwise returns - false. The stencil buffer is enabled by default. - - \sa setStencil(), setStencilBufferSize() -*/ - -/*! - If \a enable is true enables the stencil buffer; otherwise - disables the stencil buffer. - - The stencil buffer is enabled by default. - - The stencil buffer masks certain parts of the drawing area so that - masked parts are not drawn on. - - \sa stencil(), setStencilBufferSize() -*/ - -void QPlatformWindowFormat::setStencil(bool enable) -{ - setOption(enable ? QPlatformWindowFormat::StencilBuffer: QPlatformWindowFormat::NoStencilBuffer); -} - - -/*! - \fn bool QPlatformWindowFormat::stereo() const + \fn bool QWindowFormat::stereo() const Returns true if stereo buffering is enabled; otherwise returns false. Stereo buffering is disabled by default. @@ -468,61 +157,13 @@ void QPlatformWindowFormat::setStencil(bool enable) \sa stereo() */ -void QPlatformWindowFormat::setStereo(bool enable) -{ - setOption(enable ? QPlatformWindowFormat::StereoBuffers : QPlatformWindowFormat::NoStereoBuffers); -} - - -/*! - \fn bool QPlatformWindowFormat::directRendering() const - - Returns true if direct rendering is enabled; otherwise returns - false. - - Direct rendering is enabled by default. - - \sa setDirectRendering() -*/ - -/*! - If \a enable is true enables direct rendering; otherwise disables - direct rendering. - - Direct rendering is enabled by default. - - Enabling this option will make OpenGL bypass the underlying window - system and render directly from hardware to the screen, if this is - supported by the system. - - \sa directRendering() -*/ - -void QPlatformWindowFormat::setDirectRendering(bool enable) -{ - setOption(enable ? QPlatformWindowFormat::DirectRendering : QPlatformWindowFormat::IndirectRendering); -} - -/*! - \fn bool QPlatformWindowFormat::sampleBuffers() const - - Returns true if multisample buffer support is enabled; otherwise - returns false. - - The multisample buffer is disabled by default. - - \sa setSampleBuffers() -*/ - -/*! - If \a enable is true, a GL context with multisample buffer support - is picked; otherwise ignored. - - \sa sampleBuffers(), setSamples(), samples() -*/ -void QPlatformWindowFormat::setSampleBuffers(bool enable) +void QWindowFormat::setStereo(bool enable) { - setOption(enable ? QPlatformWindowFormat::SampleBuffers : QPlatformWindowFormat::NoSampleBuffers); + if (enable) { + d->opts |= QWindowFormat::StereoBuffers; + } else { + d->opts &= ~QWindowFormat::StereoBuffers; + } } /*! @@ -532,7 +173,7 @@ void QPlatformWindowFormat::setSampleBuffers(bool enable) \sa setSampleBuffers(), sampleBuffers(), setSamples() */ -int QPlatformWindowFormat::samples() const +int QWindowFormat::samples() const { return d->numSamples; } @@ -544,75 +185,26 @@ int QPlatformWindowFormat::samples() const \sa setSampleBuffers(), sampleBuffers(), samples() */ -void QPlatformWindowFormat::setSamples(int numSamples) +void QWindowFormat::setSamples(int numSamples) { detach(); - if (numSamples < 0) { - qWarning("QPlatformWindowFormat::setSamples: Cannot have negative number of samples per pixel %d", numSamples); - return; - } d->numSamples = numSamples; - setSampleBuffers(numSamples > 0); } -/*! - \since 4.2 - - Set the preferred swap interval. This can be used to sync the GL - drawing into a system window to the vertical refresh of the screen. - Setting an \a interval value of 0 will turn the vertical refresh syncing - off, any value higher than 0 will turn the vertical syncing on. - - Under Windows and under X11, where the \c{WGL_EXT_swap_control} - and \c{GLX_SGI_video_sync} extensions are used, the \a interval - parameter can be used to set the minimum number of video frames - that are displayed before a buffer swap will occur. In effect, - setting the \a interval to 10, means there will be 10 vertical - retraces between every buffer swap. - - Under Windows the \c{WGL_EXT_swap_control} extension has to be present, - and under X11 the \c{GLX_SGI_video_sync} extension has to be present. -*/ -void QPlatformWindowFormat::setSwapInterval(int interval) -{ - detach(); - d->swapInterval = interval; -} - -/*! - \since 4.2 - - Returns the currently set swap interval. -1 is returned if setting - the swap interval isn't supported in the system GL implementation. -*/ -int QPlatformWindowFormat::swapInterval() const -{ - return d->swapInterval; -} - -void QPlatformWindowFormat::setWindowApi(QPlatformWindowFormat::WindowApi api) -{ - detach(); - d->windowApi = api; -} -QPlatformWindowFormat::WindowApi QPlatformWindowFormat::windowApi() const -{ - return d->windowApi; -} -void QPlatformWindowFormat::setSharedContext(QPlatformGLContext *context) +void QWindowFormat::setSharedContext(QPlatformGLContext *context) { d->sharedContext = context; } -QPlatformGLContext *QPlatformWindowFormat::sharedGLContext() const +QPlatformGLContext *QWindowFormat::sharedGLContext() const { return d->sharedContext; } /*! - \fn bool QPlatformWindowFormat::hasWindowSurface() const + \fn bool QWindowFormat::hasWindowSurface() const Returns true if the corresponding widget has an instance of QWindowSurface. @@ -623,19 +215,13 @@ QPlatformGLContext *QPlatformWindowFormat::sharedGLContext() const \sa setOverlay() */ -/*! - If \a enable is true a top level QWidget will create a QWindowSurface at creation; - - otherwise the QWidget will only have a QPlatformWindow. - - This is useful for ie. QGLWidget where the QPlatformGLContext controls the surface. - - \sa hasOverlay() -*/ - -void QPlatformWindowFormat::setWindowSurface(bool enable) +void QWindowFormat::setWindowSurface(bool enable) { - setOption(enable ? QPlatformWindowFormat::HasWindowSurface : QPlatformWindowFormat::NoWindowSurface); + if (enable) { + d->opts |= QWindowFormat::WindowSurface; + } else { + d->opts &= ~QWindowFormat::WindowSurface; + } } /*! @@ -644,29 +230,21 @@ void QPlatformWindowFormat::setWindowSurface(bool enable) \sa testOption() */ -void QPlatformWindowFormat::setOption(QPlatformWindowFormat::FormatOptions opt) +void QWindowFormat::setOption(QWindowFormat::FormatOptions opt) { detach(); - if (opt & 0xffff) - d->opts |= opt; - else - d->opts &= ~(opt >> 16); + d->opts |= opt; } - - /*! Returns true if format option \a opt is set; otherwise returns false. \sa setOption() */ -bool QPlatformWindowFormat::testOption(QPlatformWindowFormat::FormatOptions opt) const +bool QWindowFormat::testOption(QWindowFormat::FormatOptions opt) const { - if (opt & 0xffff) - return (d->opts & opt) != 0; - else - return (d->opts & (opt >> 16)) == 0; + return d->opts & opt; } /*! @@ -674,15 +252,10 @@ bool QPlatformWindowFormat::testOption(QPlatformWindowFormat::FormatOptions opt) \sa depthBufferSize(), setDepth(), depth() */ -void QPlatformWindowFormat::setDepthBufferSize(int size) +void QWindowFormat::setDepthBufferSize(int size) { detach(); - if (size < 0) { - qWarning("QPlatformWindowFormat::setDepthBufferSize: Cannot set negative depth buffer size %d", size); - return; - } d->depthSize = size; - setDepth(size > 0); } /*! @@ -690,150 +263,20 @@ void QPlatformWindowFormat::setDepthBufferSize(int size) \sa depth(), setDepth(), setDepthBufferSize() */ -int QPlatformWindowFormat::depthBufferSize() const +int QWindowFormat::depthBufferSize() const { return d->depthSize; } -/*! - \since 4.2 - - Set the preferred red buffer size to \a size. - - \sa setGreenBufferSize(), setBlueBufferSize(), setAlphaBufferSize() -*/ -void QPlatformWindowFormat::setRedBufferSize(int size) +void QWindowFormat::setColorFormat(ColorFormat format) { detach(); - if (size < 0) { - qWarning("QPlatformWindowFormat::setRedBufferSize: Cannot set negative red buffer size %d", size); - return; - } - d->redSize = size; + d->colorFormat = format; } -/*! - \since 4.2 - - Returns the red buffer size. - - \sa setRedBufferSize() -*/ -int QPlatformWindowFormat::redBufferSize() const +QWindowFormat::ColorFormat QWindowFormat::colorFormat() const { - return d->redSize; -} - -/*! - \since 4.2 - - Set the preferred green buffer size to \a size. - - \sa setRedBufferSize(), setBlueBufferSize(), setAlphaBufferSize() -*/ -void QPlatformWindowFormat::setGreenBufferSize(int size) -{ - detach(); - if (size < 0) { - qWarning("QPlatformWindowFormat::setGreenBufferSize: Cannot set negative green buffer size %d", size); - return; - } - d->greenSize = size; -} - -/*! - \since 4.2 - - Returns the green buffer size. - - \sa setGreenBufferSize() -*/ -int QPlatformWindowFormat::greenBufferSize() const -{ - return d->greenSize; -} - -/*! - \since 4.2 - - Set the preferred blue buffer size to \a size. - - \sa setRedBufferSize(), setGreenBufferSize(), setAlphaBufferSize() -*/ -void QPlatformWindowFormat::setBlueBufferSize(int size) -{ - detach(); - if (size < 0) { - qWarning("QPlatformWindowFormat::setBlueBufferSize: Cannot set negative blue buffer size %d", size); - return; - } - d->blueSize = size; -} - -/*! - \since 4.2 - - Returns the blue buffer size. - - \sa setBlueBufferSize() -*/ -int QPlatformWindowFormat::blueBufferSize() const -{ - return d->blueSize; -} - -/*! - Set the preferred alpha buffer size to \a size. - This function implicitly enables the alpha channel. - - \sa setRedBufferSize(), setGreenBufferSize(), alphaBufferSize() -*/ -void QPlatformWindowFormat::setAlphaBufferSize(int size) -{ - detach(); - if (size < 0) { - qWarning("QPlatformWindowFormat::setAlphaBufferSize: Cannot set negative alpha buffer size %d", size); - return; - } - d->alphaSize = size; - setAlpha(size > 0); -} - -/*! - Returns the alpha buffer size. - - \sa alpha(), setAlpha(), setAlphaBufferSize() -*/ -int QPlatformWindowFormat::alphaBufferSize() const -{ - return d->alphaSize; -} - -/*! - Set the preferred accumulation buffer size, where \a size is the - bit depth for each RGBA component. - - \sa accum(), setAccum(), accumBufferSize() -*/ -void QPlatformWindowFormat::setAccumBufferSize(int size) -{ - detach(); - if (size < 0) { - qWarning("QPlatformWindowFormat::setAccumBufferSize: Cannot set negative accumulate buffer size %d", size); - return; - } - d->accumSize = size; - setAccum(size > 0); -} - -/*! - Returns the accumulation buffer size. - - \sa setAccumBufferSize(), accum(), setAccum() -*/ -int QPlatformWindowFormat::accumBufferSize() const -{ - return d->accumSize; + return d->colorFormat; } /*! @@ -841,15 +284,10 @@ int QPlatformWindowFormat::accumBufferSize() const \sa stencilBufferSize(), setStencil(), stencil() */ -void QPlatformWindowFormat::setStencilBufferSize(int size) +void QWindowFormat::setStencilBufferSize(int size) { detach(); - if (size < 0) { - qWarning("QPlatformWindowFormat::setStencilBufferSize: Cannot set negative stencil buffer size %d", size); - return; - } d->stencilSize = size; - setStencil(size > 0); } /*! @@ -857,150 +295,48 @@ void QPlatformWindowFormat::setStencilBufferSize(int size) \sa stencil(), setStencil(), setStencilBufferSize() */ -int QPlatformWindowFormat::stencilBufferSize() const +int QWindowFormat::stencilBufferSize() const { return d->stencilSize; } -/*! - Returns the default QPlatformWindowFormat for the application. All QGLWidget - objects that are created use this format unless another format is - specified, e.g. when they are constructed. - - If no special default format has been set using - setDefaultFormat(), the default format is the same as that created - with QPlatformWindowFormat(). - - \sa setDefaultFormat() -*/ - -QPlatformWindowFormat QPlatformWindowFormat::defaultFormat() -{ - return *q_platformwindow_default_format(); -} - -/*! - Sets a new default QPlatformWindowFormat for the application to \a f. For - example, to set single buffering as the default instead of double - buffering, your main() might contain code like this: - \snippet doc/src/snippets/code/src_opengl_qgl.cpp 4 - - \sa defaultFormat() -*/ - -void QPlatformWindowFormat::setDefaultFormat(const QPlatformWindowFormat &f) -{ - *q_platformwindow_default_format() = f; -} - - -/*! - Returns the default QPlatformWindowFormat for overlay contexts. - - The default overlay format is: - \list - \i \link setDoubleBuffer() Double buffer:\endlink Disabled. - \i \link setDepth() Depth buffer:\endlink Disabled. - \i \link setRgba() RGBA:\endlink Disabled (i.e., color index enabled). - \i \link setAlpha() Alpha channel:\endlink Disabled. - \i \link setAccum() Accumulator buffer:\endlink Disabled. - \i \link setStencil() Stencil buffer:\endlink Disabled. - \i \link setStereo() Stereo:\endlink Disabled. - \i \link setDirectRendering() Direct rendering:\endlink Enabled. - \i \link setOverlay() Overlay:\endlink Disabled. - \i \link setSampleBuffers() Multisample buffers:\endlink Disabled. - \i \link setPlane() Plane:\endlink 1 (i.e., first overlay plane). - \endlist - - \sa setDefaultFormat() -*/ - -//QPlatformWindowFormat QPlatformWindowFormat::defaultOverlayFormat() -//{ -// return *defaultOverlayFormatInstance(); -//} - -///*! -// Sets a new default QPlatformWindowFormat for overlay contexts to \a f. This -// format is used whenever a QGLWidget is created with a format that -// hasOverlay() enabled. - -// For example, to get a double buffered overlay context (if -// available), use code like this: - -// \snippet doc/src/snippets/code/src_opengl_qgl.cpp 5 - -// As usual, you can find out after widget creation whether the -// underlying OpenGL system was able to provide the requested -// specification: - -// \snippet doc/src/snippets/code/src_opengl_qgl.cpp 6 - -// \sa defaultOverlayFormat() -//*/ - -//void QPlatformWindowFormat::setDefaultOverlayFormat(const QPlatformWindowFormat &f) -//{ -// QPlatformWindowFormat *defaultFormat = defaultOverlayFormatInstance(); -// *defaultFormat = f; -// // Make sure the user doesn't request that the overlays themselves -// // have overlays, since it is unlikely that the system supports -// // infinitely many planes... -// defaultFormat->setOverlay(false); -//} - - -/*! - Returns true if all the options of the two QPlatformWindowFormat objects - \a a and \a b are equal; otherwise returns false. - - \relates QPlatformWindowFormat -*/ - -bool operator==(const QPlatformWindowFormat& a, const QPlatformWindowFormat& b) +bool operator==(const QWindowFormat& a, const QWindowFormat& b) { return (a.d == b.d) || ((int) a.d->opts == (int) b.d->opts - && a.d->alphaSize == b.d->alphaSize - && a.d->accumSize == b.d->accumSize && a.d->stencilSize == b.d->stencilSize && a.d->depthSize == b.d->depthSize - && a.d->redSize == b.d->redSize - && a.d->greenSize == b.d->greenSize - && a.d->blueSize == b.d->blueSize + && a.d->colorFormat == b.d->colorFormat && a.d->numSamples == b.d->numSamples - && a.d->swapInterval == b.d->swapInterval - && a.d->windowApi == b.d->windowApi); + && a.d->swapBehavior == b.d->swapBehavior + && a.d->sharedContext == b.d->sharedContext); } /*! - Returns false if all the options of the two QPlatformWindowFormat objects + Returns false if all the options of the two QWindowFormat objects \a a and \a b are equal; otherwise returns true. - \relates QPlatformWindowFormat + \relates QWindowFormat */ -bool operator!=(const QPlatformWindowFormat& a, const QPlatformWindowFormat& b) +bool operator!=(const QWindowFormat& a, const QWindowFormat& b) { return !(a == b); } #ifndef QT_NO_DEBUG_STREAM -QDebug operator<<(QDebug dbg, const QPlatformWindowFormat &f) +QDebug operator<<(QDebug dbg, const QWindowFormat &f) { - const QPlatformWindowFormatPrivate * const d = f.d; + const QWindowFormatPrivate * const d = f.d; - dbg.nospace() << "QGLFormat(" + dbg.nospace() << "QWindowFormat(" << "options " << d->opts << ", depthBufferSize " << d->depthSize - << ", accumBufferSize " << d->accumSize << ", stencilBufferSize " << d->stencilSize - << ", redBufferSize " << d->redSize - << ", greenBufferSize " << d->greenSize - << ", blueBufferSize " << d->blueSize - << ", alphaBufferSize " << d->alphaSize + << ", colorFormat " << d->colorFormat << ", samples " << d->numSamples - << ", swapInterval " << d->swapInterval + << ", swapBehavior " << d->swapBehavior + << ", sharedContext " << d->sharedContext << ')'; return dbg.space(); |