kernel/qplatformopenglcontext.cpp

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/**************************************************************************** -
2** -
3** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -
4** Contact: http://www.qt-project.org/legal -
5** -
6** This file is part of the QtGui 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 "qplatformopenglcontext.h" -
43 -
44#include <QOpenGLFunctions> -
45 -
46QT_BEGIN_NAMESPACE -
47 -
48/*! -
49 \class QPlatformOpenGLContext -
50 \since 4.8 -
51 \internal -
52 \preliminary -
53 \ingroup qpa -
54 -
55 \brief The QPlatformOpenGLContext class provides an abstraction for native GL contexts. -
56 -
57 In QPA the way to support OpenGL or OpenVG or other technologies that requires a native GL -
58 context is through the QPlatformOpenGLContext wrapper. -
59 -
60 There is no factory function for QPlatformOpenGLContexts, but rather only one accessor function. -
61 The only place to retrieve a QPlatformOpenGLContext from is through a QPlatformWindow. -
62 -
63 The context which is current for a specific thread can be collected by the currentContext() -
64 function. This is how QPlatformOpenGLContext also makes it possible to use the Qt GUI module -
65 withhout using QOpenGLWidget. When using QOpenGLContext::currentContext(), it will ask -
66 QPlatformOpenGLContext for the currentContext. Then a corresponding QOpenGLContext will be returned, -
67 which maps to the QPlatformOpenGLContext. -
68*/ -
69 -
70/*! \fn void QPlatformOpenGLContext::swapBuffers(QPlatformSurface *surface) -
71 Reimplement in subclass to native swap buffers calls -
72 -
73 The implementation must support being called in a thread different than the gui-thread. -
74*/ -
75 -
76/*! \fn QFunctionPointer QPlatformOpenGLContext::getProcAddress(const QByteArray &procName) -
77 Reimplement in subclass to native getProcAddr calls. -
78 -
79 Note: its convenient to use qPrintable(const QString &str) to get the const char * pointer -
80*/ -
81 -
82class QPlatformOpenGLContextPrivate -
83{ -
84public: -
85 QPlatformOpenGLContextPrivate() : context(0) {}
never executed: }
0
86 -
87 QOpenGLContext *context; -
88}; -
89 -
90QPlatformOpenGLContext::QPlatformOpenGLContext() -
91 : d_ptr(new QPlatformOpenGLContextPrivate) -
92{ -
93}
never executed: }
0
94 -
95QPlatformOpenGLContext::~QPlatformOpenGLContext() -
96{ -
97} -
98 -
99/*! -
100 Reimplement in subclass if your platform uses framebuffer objects for surfaces. -
101 -
102 The default implementation returns 0. -
103*/ -
104GLuint QPlatformOpenGLContext::defaultFramebufferObject(QPlatformSurface *) const -
105{ -
106 return 0;
never executed: return 0;
0
107} -
108 -
109QOpenGLContext *QPlatformOpenGLContext::context() const -
110{ -
111 Q_D(const QPlatformOpenGLContext);
never executed (the execution status of this line is deduced): const QPlatformOpenGLContextPrivate * const d = d_func();
-
112 return d->context;
never executed: return d->context;
0
113} -
114 -
115void QPlatformOpenGLContext::setContext(QOpenGLContext *context) -
116{ -
117 Q_D(QPlatformOpenGLContext);
never executed (the execution status of this line is deduced): QPlatformOpenGLContextPrivate * const d = d_func();
-
118 d->context = context;
never executed (the execution status of this line is deduced): d->context = context;
-
119}
never executed: }
0
120 -
121bool QPlatformOpenGLContext::parseOpenGLVersion(const QByteArray &versionString, int &major, int &minor) -
122{ -
123 bool majorOk = false;
never executed (the execution status of this line is deduced): bool majorOk = false;
-
124 bool minorOk = false;
never executed (the execution status of this line is deduced): bool minorOk = false;
-
125 QList<QByteArray> parts = versionString.split(' ');
never executed (the execution status of this line is deduced): QList<QByteArray> parts = versionString.split(' ');
-
126 if (versionString.startsWith(QByteArrayLiteral("OpenGL ES"))) {
never evaluated: versionString.startsWith(QByteArray("OpenGL ES", sizeof("OpenGL ES") - 1))
0
127 if (parts.size() >= 3) {
never evaluated: parts.size() >= 3
0
128 QList<QByteArray> versionParts = parts.at(2).split('.');
never executed (the execution status of this line is deduced): QList<QByteArray> versionParts = parts.at(2).split('.');
-
129 if (versionParts.size() >= 2) {
never evaluated: versionParts.size() >= 2
0
130 major = versionParts.at(0).toInt(&majorOk);
never executed (the execution status of this line is deduced): major = versionParts.at(0).toInt(&majorOk);
-
131 minor = versionParts.at(1).toInt(&minorOk);
never executed (the execution status of this line is deduced): minor = versionParts.at(1).toInt(&minorOk);
-
132 } else {
never executed: }
0
133 qWarning("Unrecognized OpenGL ES version");
never executed (the execution status of this line is deduced): QMessageLogger("kernel/qplatformopenglcontext.cpp", 133, __PRETTY_FUNCTION__).warning("Unrecognized OpenGL ES version");
-
134 }
never executed: }
0
135 } else { -
136 // If < 3 parts to the name, it is an unrecognised OpenGL ES -
137 qWarning("Unrecognised OpenGL ES version");
never executed (the execution status of this line is deduced): QMessageLogger("kernel/qplatformopenglcontext.cpp", 137, __PRETTY_FUNCTION__).warning("Unrecognised OpenGL ES version");
-
138 }
never executed: }
0
139 } else { -
140 // Not OpenGL ES, but regular OpenGL, the version numbers are first in the string -
141 QList<QByteArray> versionParts = parts.at(0).split('.');
never executed (the execution status of this line is deduced): QList<QByteArray> versionParts = parts.at(0).split('.');
-
142 if (versionParts.size() >= 2) {
never evaluated: versionParts.size() >= 2
0
143 major = versionParts.at(0).toInt(&majorOk);
never executed (the execution status of this line is deduced): major = versionParts.at(0).toInt(&majorOk);
-
144 minor = versionParts.at(1).toInt(&minorOk);
never executed (the execution status of this line is deduced): minor = versionParts.at(1).toInt(&minorOk);
-
145 } else {
never executed: }
0
146 qWarning("Unrecognized OpenGL version");
never executed (the execution status of this line is deduced): QMessageLogger("kernel/qplatformopenglcontext.cpp", 146, __PRETTY_FUNCTION__).warning("Unrecognized OpenGL version");
-
147 }
never executed: }
0
148 } -
149 -
150 if (!majorOk || !minorOk)
never evaluated: !majorOk
never evaluated: !minorOk
0
151 qWarning("Unrecognized OpenGL version");
never executed: QMessageLogger("kernel/qplatformopenglcontext.cpp", 151, __PRETTY_FUNCTION__).warning("Unrecognized OpenGL version");
0
152 return (majorOk && minorOk);
never executed: return (majorOk && minorOk);
0
153} -
154 -
155QT_END_NAMESPACE -
156 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial