Warning: That file was not part of the compilation database. It may have many parsing errors.

1/****************************************************************************
2**
3** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/legal
5**
6** This file is part of the QtOpenGL module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Digia. For licensing terms and
14** conditions see http://qt.digia.com/licensing. For further information
15** use the contact form at http://qt.digia.com/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 2.1 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 2.1 requirements
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24**
25** In addition, as a special exception, Digia gives you certain additional
26** rights. These rights are described in the Digia Qt LGPL Exception
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28**
29** GNU General Public License Usage
30** Alternatively, this file may be used under the terms of the GNU
31** General Public License version 3.0 as published by the Free Software
32** Foundation and appearing in the file LICENSE.GPL included in the
33** packaging of this file. Please review the following information to
34** ensure the GNU General Public License version 3.0 requirements will be
35** met: http://www.gnu.org/copyleft/gpl.html.
36**
37**
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include <QtGui/QPaintDevice>
43#include <QtGui/QWidget>
44#include <QtOpenGL/QGLWidget>
45#include "private/qglwindowsurface_qws_p.h"
46#include "private/qpaintengine_opengl_p.h"
47
48QT_BEGIN_NAMESPACE
49
50/*!
51 \class QWSGLWindowSurface
52 \since 4.3
53 \ingroup qws
54 \preliminary
55
56 \brief The QWSGLWindowSurface class provides the drawing area for top-level
57 windows with Qt for Embedded Linux on EGL/OpenGL ES. It also provides the
58 drawing area for \l{QGLWidget}s whether they are top-level windows or
59 children of another QWidget.
60
61 Note that this class is only available in Qt for Embedded Linux and only
62 available if Qt is configured with OpenGL support.
63*/
64
65class QWSGLWindowSurfacePrivate
66{
67public:
68 QWSGLWindowSurfacePrivate() :
69 qglContext(0), ownsContext(false) {}
70
71 QGLContext *qglContext;
72 bool ownsContext;
73};
74
75/*!
76 Constructs an empty QWSGLWindowSurface for the given top-level \a window.
77 The window surface is later initialized from chooseContext() and resources for it
78 is typically allocated in setGeometry().
79*/
80QWSGLWindowSurface::QWSGLWindowSurface(QWidget *window)
81 : QWSWindowSurface(window),
82 d_ptr(new QWSGLWindowSurfacePrivate)
83{
84}
85
86/*!
87 Constructs an empty QWSGLWindowSurface.
88*/
89QWSGLWindowSurface::QWSGLWindowSurface()
90 : d_ptr(new QWSGLWindowSurfacePrivate)
91{
92}
93
94/*!
95 Destroys the QWSGLWindowSurface object and frees any
96 allocated resources.
97 */
98QWSGLWindowSurface::~QWSGLWindowSurface()
99{
100 Q_D(QWSGLWindowSurface);
101 if (d->ownsContext)
102 delete d->qglContext;
103 delete d;
104}
105
106/*!
107 Returns the QGLContext of the window surface.
108*/
109QGLContext *QWSGLWindowSurface::context() const
110{
111 Q_D(const QWSGLWindowSurface);
112 if (!d->qglContext) {
113 QWSGLWindowSurface *that = const_cast<QWSGLWindowSurface*>(this);
114 that->setContext(new QGLContext(QGLFormat::defaultFormat()));
115 that->d_func()->ownsContext = true;
116 }
117 return d->qglContext;
118}
119
120/*!
121 Sets the QGLContext for this window surface to \a context.
122*/
123void QWSGLWindowSurface::setContext(QGLContext *context)
124{
125 Q_D(QWSGLWindowSurface);
126 if (d->ownsContext) {
127 delete d->qglContext;
128 d->ownsContext = false;
129 }
130 d->qglContext = context;
131}
132
133QT_END_NAMESPACE
134

Warning: That file was not part of the compilation database. It may have many parsing errors.